模块 Module
定义
包含一系列数据、函数、类的文件,通常以.py结尾。
作用
让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。
有利于多人合作开发。
导入
import
语法:
import 模块名
import 模块名 as 别名
作用:将某模块整体导入到当前模块中
使用:模块名.成员
from import
语法:
from 模块名 import 成员名[ as 别名1]
作用:
将模块内的一个或多个成员导入到当前模块的作用域中。
from import *
语法:from 模块名 import *
作用:将某模块的所有成员导入到当前模块。
模块中以下划线(_)开头的属性,不会被导入,通常称这些成员为隐藏成员。
模块变量
__all__变量:(元组)定义可导出成员,仅对from xx import *语句有效。
__doc__变量:文档字符串。
__file__变量:模块对应的文件路径名。
__name__变量:模块自身名字,可以判断是否为主模块。
当此模块作为主模块(第一个运行的模块)运行时,__name__绑定'__main__',不是主模块,而是被其它模块导入时,存储模块名。
加载过程
在模块导入时,模块的所有语句会执行。
如果一个模块已经导入,则再次导入时不会重新执行模块内的语句。
分类
内置模块(builtins),在解析器的内部可以直接使用。
标准库模块,安装Python时已安装且可直接使用。
第三方模块(通常为开源),需要自己安装。
用户自己编写的模块(可以作为其他人的第三方模块)
搜索顺序
搜索内建模块(builtins)
sys.path 提供的路径,通常第一个是程序运行时的路径。
包package
定义
将模块以文件夹的形式进行分组管理。
作用
让一些相关的模块组织在一起,使逻辑结构更加清晰。
导入
import 包名 [as 包别名] 需要设置__all__
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 成员名 [as 属性新名]
# 导入包内的所有子包和模块
from 包名 import *
from 包名.模块名 import *
搜索顺序
sys.path 提供的路径
__init__.py 文件
是包内必须存在的文件
会在包加载时被自动调用
__all__
记录from 包 import * 语句需要导入的模块
案例:
my_ project /
main.py
common/
__init__.py
double_list_helper.py
list_helper.py
skill_system/
__init__.py
skill_deployer.py
skill_manager.py