zoukankan      html  css  js  c++  java
  • python中的包

      包将有联系的模块组织在一起,可以避免模块名称冲突问题,让应用组织结构更加清晰

      假定我们的包的例子有如下的目录结构:

    Phone/
        _init_.py
        common_util.py
        Voicedta/
            _init_.py
            Post.py
            Isdn.py
        Fax/
            _init_.py
            G3.py
        Mobile/
            _init_.py
           Analog.py
           igital.py
        Pager/
            _init_.py
            Numeric.py

      Phone是最顶层的包,Voicedta等是它的子包,可以这样导入子包,如下:

    import Phone.Mobile.Analog
    Phone.Mobile.Analog.dial()

      也可以使用from-import实现不同需求的导入

      第一种方法只是导入顶层的子包,然后使用属性/点操作符向下引用子包树:

    from Phone import Mobile
    Mobile.Analog.dial('555-1212')

      此外,还可以引入更多的子包

    from Phone.Mobile import Analog
    Analog.dial("555-1212")

      事实上,可以一直沿子包的树状结构导入

    from Phone.Mobile.Analog import dial
    dial("555-1212")

      在上边的目录结构中,有很多_init_.py文件。这些是初始化模块,from-import语句导入子包时需要用到它。如果没有用到,可以说是空文件。

      包同样支持 from-import all 语句

    from package.module import *

      然而,这样的语句会导入哪些文件取决于操作系统的文件系统。所以在_init_.py中加入_all_变量。该变量包含执行这样的语句时一个个导入的模块的名字。它由一个模块名字符串列表组成。

  • 相关阅读:
    Scrapy+Scrapy-redis+Scrapyd+Gerapy 分布式爬虫框架整合
    centos7 安装软件指南
    Kafka--消费者
    Kafka--生产者
    Kafka--初识Kafka
    Kafka--Kafka简述
    NetWork--记一次Http和TLS抓包
    JVM--a == (a = b)基于栈的解释器执行过程
    Java容器--Queue
    Idea--使用Idea调试设置
  • 原文地址:https://www.cnblogs.com/FlameLuo/p/9744118.html
Copyright © 2011-2022 走看看