主题
模块化
说明
模块 (Module)
Python 模块可分为三类:
- 标准库模块:Python 自带的模块,如
math、sys等。 - 自定义模块:用户自己编写的模块。
- 第三方模块:通过包管理工具(如
pip)安装的模块,如requests、numpy等。
包 (Package)
Python 包(Package)概述:
- 在 Python 中,【包含
__init__.py的文件夹】就是一个包。 - 通常会把【某个特定功能相关的所有模块】放入一个包中。
- 使用包可以进一步提升代码的:可维护性、可复用性,便于管理大型项目。
bash
project/
│ ├── package_name/
│ │ ├── __init__.py
│ │ ├── module1.py
│ │ └── module2.py
│ └── main.pyPython 包可分为三类:
- 标准库包:Python 自带的包,如
os、json等。 - 自定义包:用户自己编写的包。
- 第三方包:通过包管理工具(如
pip)安装的包,如requests、flask等。
包与模块的关系
- 一个模块就是一个
.py文件 ,包是用来 “管理模块” 的目录(文件夹)。 - 一个包中可以有多个模块,也可以有多个子包。
__init__.py 文件
__init__.py是包的初始化文件,在包被导入时,__init__.py会被自动调用__init__.py中可以编写一些包的初始化逻辑__init__.py中所定义的内容,会被from 包名 import *形式全部引入__init__.py中也可以使用__all__来控制包中的哪些模块可以被from 包名 import *引入
定义模块
创建一个新的 Python 文件,例如
module_name.py。在文件中定义函数、类或变量。
py# module_name.py def function_name(): pass
__all__
__all__ 是一个可选的列表,定义了当使用 from module_name import * 时,哪些名称会被导入。
py
# module_name.py
__all__ = ['function_name']
def function_name():
pass
def another_function():
pass__name__
__name__ 是一个特殊变量,用于确定模块是被直接运行还是被导入。
- 作为主程序运行时,
__name__的值为"__main__"。 - 被导入时,
__name__的值为模块的名称(不带.py)。
py
# module_name.py
if __name__ == "__main__":
print("This module is being run directly")
else:
print("This module has been imported")引入模块
从模块中引入
import 模块名pyimport module_nameimport 模块名 as 别名pyfrom module_name import function_namefrom 模块名 import 具体内容1, 具体内容2, ……pyfrom module_name import function_name as fnfrom 模块名 import 具体内容1 as 别名1, 具体内容2 as 别名2, ……pyfrom module_name import function_name1 as fn1, function_name2 as fn2from 模块名 import *pyfrom module_name import *
从包中引入
import 包名.模块名pyimport package_name.module_nameimport 包名.模块名 as 别名pyfrom package_name.module_name import function_namefrom 包名.模块名 import 具体内容1, 具体内容2, ……pyfrom package_name.module_name import function_name as fnfrom 包名.模块名 import 具体内容1 as 别名1, 具体内容2 as 别名2, ……pyfrom package_name.module_name import function_name1 as fn1, function_name2 as fn2from 包名.模块名 import *pyfrom package_name.module_name import *from 包名 import 模块名pyfrom package_name import module_namefrom 包名 import 模块名 as 别名pyfrom package_name import module_name as mnfrom 包名 import *pyfrom package_name import *import 包名pyimport package_name
补充:若包嵌套包时,可通过以下方式引入模块:
py
import package_name.sub_package.module_name