Python3 的模块
Python3 的代码以模块方式组织,一个模块对应一个以模块名命名的 py 文件,当前模块名存放在全局遍历 __name__
中。
模块的初始化
模块中包含直接执行的语句和函数定义,直接执行的语句在模块第一次导入的时候执行,相当于模块的初始化代码。
模块有单独私有符号表,模块的私有的符号表被模块内的函数当作全局的符号表。
导入模块:
from fibo import fib, fib2
from fibo import *
import fibo as fib
from fibo import fib as fibonacci
模块的直接运行
直接执行模块文件时,从下面的 if 条件之后的语句开始执行:
if __name__ == "__main__":
import sys
fib(int(sys.argv[1]))
模块的查找路径
python3 解析器遇到导入模块的语句时,首先查看导入的模块是否是 python3 的内置模块,然后到变量 sys.path 指定的目录中查找。
sys.path 中包含多个目录,默认目录顺序是:
- 当前模块文件所在的目录
- 环境变量 PYTHONPATH 指定的路径,默认是 prefix/lib/pythonversion,prefix 是 python 的安装路径
- python 的安装路径
当前目录中的模块如果与 python 标准库中的模块重名,后者被前者覆盖。