模块-内置变量
基于以下目录结构举例
. ├── main.py ├── package1 │ ├── __init__.py │ ├── moduleA.py │ └── package2 │ └── moduleB.py └── package3 └── moduleC.py
# modle[A|B|C] 文件 '''moduleA''' print('__name__:', __name__ or '无') print('__file__:', __file__ or '无') print('__package__:', __package__ or '无') print('__doc__:', __doc__ or '无')
__name__
当文件为可执行文件(main.py)时
值为 __main__
# main.py
print('__name__:', __name__ or '无')
__name__: __main__
当文件为模块时
值为 模块名称(带上一直到顶包的路径)
# main.py
import package1.moduleA # 导入会执行 moduleA 文件
import package1.package2.moduleB # 导入会执行 moduleB 文件
import package3.moduleC # 导入会执行 moduleC 文件
__name__: package1.moduleA
__name__: package1.package2.moduleB
__name__: package3.moduleC
__package__
当文件为可执行文件(main.py)时
值为 None
当文件为模块时
值为 所属包路径(一直到顶包的路径)
# main.py
import package1.moduleA # 导入会执行 moduleA 文件
import package1.package2.moduleB # 导入会执行 moduleB 文件
import package3.moduleC # 导入会执行 moduleC 文件
__package__: package1
__package__: package1.package2
__package__: package3
__file
值为 当前文件绝对路径
__file__: /Users/tal/Downloads/project/package1/moduleA.py
__doc
值为 文档的描述
__doc__: moduleA
__doc__: moduleB
__doc__: moduleC