python的package,python中的pack
包是指包,是一个层次化的文件目录结构。它定义了由N个模块或N个子包组成的python应用执行环境。Popular:包是包含__init__的目录。py文件,它必须有这个__init__。py文件和其他模块或子包。
但这可以分为两种情况。第一种情况是空的__init__。py文件,另一种情况是__init__。编写了代码的py文件。无论是空的还是有内容的,这个目录都会被认为是一个包,是一个logo。
相关:《Python基础教程》
package的初始化工作
导入包时,__init__的代码。py只会执行一次。
导入
编译
导入
包自__init__中的可执行代码。py会在导入包的时候执行,注意把你的代码放在包里尽量消除副作用,比如把代码尽量封装到函数或者类里。
__init__.py内的导入顺序
当我尝试导入时
FrompackageImportSomething导入语句会先检查某物是否是__init__的变量。py,然后检查是否是子包,然后检查是否是模块,最后抛出一个ImportError。
所以检查顺序如下:
(1)变量在_ _ init _ _。py文件
(2)是包内的子包吗?
(3)是包里的模块吗?
看个例子
我们有一个具有以下结构的包
a.py文件中有一个函数。
defbar():
Print (hello,函数 bar 来自模块 a 调用)在b.py文件中有一个函数
deffoo():
Print (hello,从模块 b 调用的函数 foo )然后我们添加一个空__init__。简单包中的py文件。
让我们看看导入simple_package时会发生什么(在simple_package中激活python shell或simple_package的路径包含在python的sys.path或Python的path环境变量中)
导入简单包
简单包
/home/Bernd/Dropbox(boden SEO)/websites/python-course . eu/examples/simple_package中的模块“simple _ package”
/__init__。py
简单_包. a
回溯(mostrecentcalllast):
文件 stdin ,第1行,在模块中
NameError:name未定义名称“a”
简单_包. b
回溯(mostrecentcalllast):
文件 stdin ,第1行,在模块中
错误:名称“b”未定义我们可以看到simple_package已成功导入,但a.py和b.py尚未导入。
当然,如果想用import simple_package自动加载模块A或B,有两种方法。
第一种是在__init__中导入模块A或B。py,然后保存,激活python的交互环境。
#__init__。巴拉圭
重要的
Importb再次尝试导入simple_package时,可以使用simple_package.a.bar()来使用模块a中的bar()函数。
第二种方法是手动导入。当要使用模块A中的bar()函数时,需要手动导入。
Importsimple_package.aasa然后您可以将bar()函数与. bar()一起使用。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。