面试复习-Python-模块

2024-10-09 21:07:44 浏览数 (5)

模块

模块是一个包含 Python 定义和语句的文件,其作用包括:

  • 代码组织与复用
  • 每个模块都有自己的全局作用域,不同模块中的同名变量和函数不会相互干扰

要点:

  • 模块的搜索路径存在于PYTHONPATH环境变量中,解释器中可以通过sys.path查看
  • 命名空间:局部空间 > 全局空间 > 内建空间
  • python的对象可以看做一个命名空间,可以通过’.’给其添加属性。

模块导入

  • import module_name
  • from module_name import obj1, obj2...
  • from module_name import obj1 as obj
  • import module_name as obj
  • 被导入模块只在第一次导入的时候执行
  • 被导入的模块或Python对象遵循全局或者局部作用域的原则

包是一种组织模块的方式,它可以将多个相关的模块放在一个目录下,以便更好地管理和复用代码。一个包实际上是一个包含 init.py 文件的目录。这个文件可以是空的,也可以包含一些初始化代码,当包被导入时会自动执行。一个拥有子包的目录结构如下:

代码语言:javascript复制
my_package/
    __init__.py
    module1.py
    module2.py
    sub_package/
        __init__.py
        sub_module1.py
        sub_module2.py

要点:

默认绝对导入,即从包的根目录开始导入。相对导入指使用被导入模块的相对路径导入。相对导入只支持from...import的语法

代码语言:javascript复制
# 从sub_module2中导入其他模块

from my_package.sub_package import sub_module1 # 绝对导入
from .sub_module1 import obj1 # 相对导入
from ..module1 import obj2 # 相对导入

模块中的对象命名如果以_开头在不会被from module import *导入

1 人点赞