pythonpackages有什么用-创新互联
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为尼河口企业提供专业的成都网站制作、成都做网站,尼河口网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。这期内容当中小编将会给大家带来有关python packages有什么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
package指的就是包,它是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。
但是这会分为两种情况,第一种情况是一个空的__init__.py文件,另外一个情况是写了代码的__init__.py文件。不管是空的还是有内容的,这个目录都会被认为是一个package,这是一个标识。
package的初始化工作
一个package 被导入,不管在什么时候__init__.py的代码都只会被执行一次
>>> import package hello world >>> import package >>> import package
由于 package 被导入时 __init__.py 中的可执行代码会被执行,所以小心在 package 中放置你的代码,尽可能消除它们产生的副作用,比如把代码尽可能的进行封装成函数或类。
__init__.py内的导入顺序
当我尝试导入
from package import something
import语句会首先检查something是不是__init__.py的变量,然后检查是不是subpackage,再检查是不是module,最后抛出ImportError。
所以检查顺序如下:
(1)__init__.py 文件内变量
(2)是不是package内的subpackage
(3)是不是package内的module
看个例子
我们有一个如下结构的package
在a.py文件内有一个函数
def bar(): print("Hello, function 'bar' from module 'a' calling")
在b.py文件内有一个函数
def foo(): print("Hello, function 'foo' from module 'b' calling")
然后我们添加一个空的__init__.py 文件在simple_package里面。
我们看下,当我们import simple_package的时候到底会发生什么事情(在simple_package内激活Python shell或者simple_package的路径被包含在python的sys.path或者在PYTHONPATH的环境变量中)
>>> import simple_package >>> >>> simple_package>>> >>> simple_package.a Traceback (most recent call last): File " ", line 1, in NameError: name 'a' is not defined >>> >>> simple_package.b Traceback (most recent call last): File " ", line 1, in NameError: name 'b' is not defined
我们可以看到simple_package已经被成功导入,但是a.py和b.py并没有被导入
当然了,如果你希望使用import simple_package后自动加载a或者b 模块,这里有两种办法。
第一种就是在__init__.py内导入a或者b模块,然后保存再激活python的交互环境
#__init__.py import a import b
当你再次尝试import simple_package后,就可以使用simple_package.a.bar()来使用模块a中的bar()函数了。
第二办法就是手动导入,当你想使用模块a中的bar()函数时,需要手动导入
import simple_package.a as a
然后就是可以a.bar()来使用bar()函数了。
上述就是小编为大家分享的python packages有什么用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联-成都网站建设公司行业资讯频道。
网站栏目:pythonpackages有什么用-创新互联
标题链接:http://azwzsj.com/article/dcoecj.html