23.Python基础篇-模块和包
模块(Module)
模块的定义:模块是包含 Python 代码的 .py
文件,可包含变量、函数、类等代码单元。每个 Python 文件本质上就是一个模块。
两种使用方式
import与from ... import...
import math # 导入整个模块 from math import pi, sqrt # 导入模块中的特定内容
绝对路径与相对路径导入
默认查找路径
通过 sys.path
列表查找模块的路径。可以通过修改 sys.path
或配置 PYTHONPATH
环境变量来调整模块的查找路径。
print(sys.path) # 查看默认查找路径 # ['C:\\Users\\15801\\PycharmProjects\\pythonProject\\模块', 'C:\\Users\\15801\\PycharmProjects\\pythonProject', 'D:\\JetBrains\\PyCharm 2023.1.4\\plugins\\python\\helpers\\pycharm_display', 'D:\\Python\\Python38\\python38.zip', 'D:\\Python\\Python38\\DLLs', 'D:\\Python\\Python38\\lib', 'D:\\Python\\Python38', 'D:\\Python\\Python38\\lib\\site-packages', 'D:\\JetBrains\\PyCharm 2023.1.4\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
修改添加默认查找路径
修改sys.path列表的方式
sys.path.append('C:\\Users\\15801\\PycharmProjects\\pythonProject\\模块\\xxx') # 往列表中增加一个新的路径,添加之后再导入时会从这个路径查找要导入的模块
包
包的定义
包是包含多个模块的文件夹,通常包含一个 __init__.py
文件来标识该文件夹是一个包。包可以包含多个模块或子包。
包的结构
my_package/ ├── __init__.py ├── module1.py ├── module2.py └── sub_package/ ├── __init__.py └── module3.py
__init__.py文件
文件说明:用于初始化包,在包被导入时会执行其中的代码。
执行时机:在包被导入时。执行到import当前包的时候,会自动执行当前包下的__init__.py
什么作用
在A包下的__init__文件中,写上导入B包的内容。这样当再导入A包时,会将B包的内容也加载到内存中
# my_package/__init__.py from .module1 import func1 # 使得 func1 可以通过 my_package.func1 调用
可以用来做什么
1.可以在 __init__.py
文件中指定包的默认导入项,让用户导入包时可以直接访问某些模块或变量。
例如,创建一个 math_pkg
包,包含 addition.py
和 multiplication.py
模块,我们希望用户只需导入 math_pkg
就能直接使用这些模块里的函数,可以在 __init__.py
中进行如下配置:
这样,用户可以直接使用以下方式访问包中的内容,而不必分别导入每个模块:
2.控制包的命名空间
可以通过在 __init__.py
文件中定义 __all__
列表来限制包的命名空间,指定哪些模块或内容可以被外部导入: