Python之路【第三篇】:模块

时间:2022-05-25 07:57:42

定义:

包:包含__init__.py文件、模块(也是.py文件)

当包被其它模块调用时,首先会执行该包下的__init__文件

包含有模块,包可以有多级

模块的导入:

import

from...import...

当Python导入一个模块时,Python首先查找当前路径;然后查找lib目录、site-packages目录(python\Lib\site-packages)和环境变量PYTHONPATH设置的目录

被调用模块或包路径必须在主文件同级目录或sys.path列出的目录下

>>> import sys
>>> sys.path
['', '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages']

包必须至少含有一个__init__.py文件,__init__.py文件内容可以为空,用于标识该目录是包

__init__.py文件还用于提供同一路径下的模块列表,这样可在主文件中一次导入包中的所有模块

aaarticlea/png;base64,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*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" alt="" />

接下来自定义包

p1的__init__.py

if __name__ == '__main__':
print ('main')
else:
print ('p1 inited')

p2的__init__.py

if __name__ == '__main__':
print ('main')
else:
print ('p2 inited')

p1的m1.py

def func():
print ('p1.m1.func()') if __name__ == '__main__':
print ('m1.py as main processor')
else:
print ('m1.py is called')

p2的m2.py

def func2():
print ('p2.m2.func2()') if __name__ == '__main__':
print ('m2.py as main processor')
else:
print ('m2.py is called')

main.py

from p1 import m1
from p2 import m2 m1.func()
m2.func()

执行主文件(导入文件会执行__init__.py文件)

[root@hy p]# python main.py
p1 inited
m1 is called
p2 inited
m2 is called
p1.m1.func()
p1.m2.func()