模块化编程
模块就是python程序
导入模块
本质:将模块的全部代码加载到内存并执行,然后将整个模块内容赋值给与模块同名的变量。模块中的程序单元就是这个变量的成员。
导入方法
- 导入模块的所有成员:import 模块名 [as 别名]——调用成员时,要加模块名前缀
- 导入模块内指定成员:from 模块名 import 成员名 [as 别名]——可直接调用成员
- 导入模块内不以下划线开头的成员:from 模块名 import * ——可直接调用成员
- 可用__all__变量指定可导入的模块成员:all = [‘模块成员1’, ‘模块成员2’]
- 常用于包的__init__.py文件
- 在成员名相同时有一定风险
- 导入多个模块时,用逗号分隔
- 模块名的别名可用于调用模块,成员名的别名可用于调用成员
访问说明文档
位于程序开始位置的字符串会成为该程序的说明文档,可通过__doc__属性访问
运行模块
python 模块名.py ——模块名即文件名
模块内置的__name__变量,默认值是模块名,直接用python命令运行时,变成__main__,如果希望模块在导入时不要执行,仅在python命令中执行,可在模块中添加代码:
if __ name__ == '__main__': 各程序成员
# 加载模块
默认的加载路径
通常把扩展模块放在【lib\site-packages】下,python解释器可以查看所有默认的模块加载路径
import sys
print(sys.path)
设置window环境变量
【开始】——搜索【环境变量】——编辑账户的环境变量——新建——
变量名:PATH
变量值:.; d:\python_module(其中:【.】表示当前路径)
# 包
包本质上是模块,物理上是包含多个模块源文件的文件夹,包可以包含另一个包
定义包:创建文件夹,添加【inti.py】文件——常用于集成包内各模块的成员
from . import 模块名 #从当前路径导入模块
from .模块名 import * #从模块导入所有成员
导入包:import 包名——本质:加载并执行包下的【inti.py】文件
导入包内成员:
import 包名
import 包名.成员名 #调用时要加前缀
from 包名 import 成员名 #可直接调用
注意:如果【inti.py】文件没有集成包内各模块的成员,导入顺序为:包-模块-模块成员
# 查看模块内容
- 模块成员
import 模块名
dir(模块名) #查看全部成员
[i for i in dir(模块名) if not i.startswith('_')] #查看供外部调用的成员
模块名.__all__ #模块带__all__变量时适用
- 帮助信息。help(模块名.成员名)——实质:调用__doc__属性
- 源文件路径(便于查看源代码)。模块名.file
部分不是用python语言写的底层交互模块可能没有__file__属性