python module
- module是包含python定义和语句的文件. 其文件名是模块名加后缀
.py
. - 在module内部,通过全局变量
__name__
可以获取模块名。 - module可以包含可执行语句和函数定义。这些语句可用于初始化模块,且仅在
import
第一次遇到module name 时执行。另外,文件作为脚本运行时,也会执行这些语句。 - 当以
python module_name.py <arguments>
执行模块时,解释器会把__name__
赋值为__main__
,所以可以把下面的语句添加到模块的末尾,这样就可以把这个文件即可以当作脚本,也可以当作模块
if __name__ == '__main__':
...
module的搜索路径
- 当一个名为spam模块被导入时,解释器首先搜索具有该名称的内置模块。这些模块的名字被列在
sys.builtin_module_names
中。如果没有找到,他就在变量sys.path
给出的目录列表中搜索一个名为spam.py
的文件。 sys.path
从以下位置初始化:- 输入脚本的目录
- PYTHONPATH
- 依赖于安装的默认值(包括
site-packages
目录)
dir()
- 内置函数
dir()
用于查找模块定义的名称,返回结果是经过排序的字符串列表。
package
- 包是一种用 点式模块名 构造python模块命名空间的方法。例如,模块名A.B 表示包A中名为B的子模块。
- Python只把含有
__init__.py
文件的目录当成包。可以在__init__.py
文件中做包的初始化代码。
__main__.py
文件是什么?
在terminal中运行一个python文件,经常是如下的:
python my_program.py
也可以先创建一个包含完整代码的目录(package)或者zip文件,在其中创建一个__main__.py文件。然后就可以通过在终端中执行 package name(目录名称),就会自动调用__main__.py文件。
python my_program_dir
python my_program.zip
python -m my_program
python -m
# python3 --help
...
-m mod : run library module as a script (terminates option list)
...
python -m module name: 把模块当作脚本来运行。