模块
https://docs.python.org/zh-cn/3/tutorial/modules.html
模块的概念被高级语言广泛使用。
Python的定义
一个包括Python定义和语句的文件,即XXX.py。
引入模块。
import fibo
之后就可以使用fibo中定义的函数/方法。
初始化模块
模块可以包括可执行的语句和函数。当第一次在import中被导入时,执行一次。如果文件被当成脚本运行,它们也会运行,例:
python3 xxx.py <arguments>
import语法的变体
from fibo import fib, fib2 # from fibo import *
这样可以直接使用函数名了,前面无需添加模块名字。但是不提倡用*,因为不利于代码的理解和维护,可读性变差了。
以脚本的方式执行模块
python fibo.py <arguments>
以脚本方式调用的话, __name__被赋值为"__main__",意味着在模块末尾自动添加:
if __name__ == "__main__": import sys fib(int(sys.argv[1]))
如果以模块方式导入,上面的代码判断False。
模块如何被搜索到?
- 当一个名为
spam
的模块被导入的时候,解释器首先寻找具有该名称的内置模块。 - 没有,则解释器从
sys.path
变量给出的目录列表里寻找名为spam.py
的文件。
"Compiled" Python files
为了快速的加载模块,Python缓存了每个模块被编译后的版本。放在__pycache___目录内,名称的格式:module.version.pyc。
version为python的版本号。
标准模块
Python附带了一个标准模块库。
sys模块被内部嵌套在解释器中。
变量ps1, ps2是不同的辅助提升符号,用于交互操作。
>>> import sys >>> sys.ps1 '>>> ' >>> sys.ps2 '... '
sys.path变量是一个字符串列表, 用于确定解释器的模块搜索路径。
该变量被初始化为从环境变量 PYTHONPATH
获取的默认路径,或者如果 PYTHONPATH
未设置,则从内置默认路径初始化。
内置dir()函数
查找模块中定义的变量名,函数名,模块名等等。返回一个排序了的字符串列表a sorted list of strings.
⚠️,内置函数和内置变量名字被放在标准模块builtins内。
>>> import builtins >>> dir(builtins) ['ArithmeticError', ...略
Packages
用于把相关的模块放到一起。
sound/ Top-level package __init__.py Initialize the sound package formats/ Subpackage for file format conversions __init__.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py ... effects/ Subpackage for sound effects __init__.py echo.py surround.py reverse.py ...