最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python packages是什么意思

    正文概述    2020-10-15   263

    python packages是什么意思

    package指的就是包,它是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。

    但是这会分为两种情况,第一种情况是一个空的__init__.py文件,另外一个情况是写了代码的__init__.py文件。不管是空的还是有内容的,这个目录都会被认为是一个package,这是一个标识。

    相关推荐:《Python基础教程》

    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
    <module 'simple_package' from '/home/bernd/Dropbox (Bodenseo)/websites/python-course.eu/examples/simple_package
    /__init__.py'>
    >>> 
    >>> simple_package.a
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'a' is not defined
    >>> 
    >>> simple_package.b
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    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是什么意思

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元