包模块管理
包
在文件夹下创建一个 __init__.py
的文件,可以将文件夹标识为包
导入包
import a1
print(a1.aaa)
导入模块中的部分变量、导入包中的部分模块
from a1 import aaa
print(aaa)
定义导出的变量
# 定义哪些变量可以被 * 加载
__all__ = ['aaa', 'bbb']
aaa = 2
bbb = 5
ccc = 8
from a1 import * # 此时只能导出 aaa 和 bbb
# or
from a1 import aaa, bbb
# or
from a1 import (aaa, bbb)
模块内置变量
-
dir()
当前模块所有变量的序列,dir 可以传入 import 的模块名,dir(sys)
-
__name__
模块文件中值为模块名,例如package2.package4.p3
,入口文件中值为__main__
-
__package__
模块文件中值为包名,入口文件中值为None
-
__doc__
模块头部的'''
注释内容,如果没有注释,值为None
-
__file__
物理磁盘路径
入口文件指
python3 xxx.py
python 执行文件,与被导入的模块内置变量不同
__name__
if __name == '__main__':
print('This is app')
else
print('this is module')
相对路径和绝对路径
绝对路径
绝对路径导入使用 import
,以顶级包开头
import package2.package4.p2
相对路径
相对路径使用 from
来导入,以 . .. ...
来访问路径
from ..p3 import aa
相对路径导入是基于 __name__
内置变量来访问的,所以:
-
使用相对路径不能超出当前文件的顶级包。
package2 package3 p4.py p5.py p6.py
p4.py
的__name__
值为package2.package3.p4
,顶级包为package2
, 不能通过相对路径访问p6.py
-
入口文件的
__name__
值为__name__
,所以入口文件中不能使用相对路径导入。