1.4.3 编写自己的模块和包

Posted Avention

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.4.3 编写自己的模块和包相关的知识,希望对你有一定的参考价值。

  Python程序除了可以直接运行,还可以作为模块导入并使用其中的对象。通过__name__属性可以识别程序的使用方式。每个Python脚本在运行时都有一个__name__属性,如果脚本作为模块被导入,则其__name__属性的值被自动设置为模块名;如果脚本单独运行,则其__name__属性值被自动设置为字符串__main__。例如,假设程序 hellp.py中代码如下:

1 def main():
2     if __name__ == __main__:
3     
4         print(This program is run directly.)
5         
6     elif __name__ == hello:
7     
8         print(This program is used as a module.)

 

  对于大型软件的开发,不可能把所有代码都放到一个文件中,那样会使得代码很难维护。对于复杂的大型系统,可以使用包来管理多个模块。包是Python用来组织命名空间和类的重要方式,可以看作是包含大量Python程序模块的文件夹。在包的每个目录中都包含一个__init__.py文件,该文件可以是一个空文件,用于表示当前文件夹是一个包。__init__py文件的主要用途是甚至__all__变量以及执行初始化包所需的代码,其中__all__变量中定义的对象可以在使用“from ... impor * ”时全部被导入。

  假设有如下结构的包:

  sound/                                                                         #Top-level package

    __init__.py                                                           #Initialize the sound package

    formats/                                                               #Subpackage for file format conversions

      __init__.py

      wavread.py

      aiffread.py

      ...

    effects/                                                                 #Subpackage for sound effects

      __init__.py

      echo.py

      surround.py

      reverse.py

      ...

    filters/                                                                  #Subpackage for filters

      __init__.py

      vocoder.py

      karaoke.py

      ...

  那么,可以在自己的程序中使用下面的代码导入其中一个模块:

    import sound.effects.echo

  然后使用完整名字来访问或调用其中的成员,例如:

    sound.effects.echo.echofilter(input,output,delay=0.7,atten=4)

    如果sound\effects\__init__.py文件中有下面一行的代码:

    __all__=[‘echo‘,‘sourround‘,‘reverse‘]

  那么就可以使用这样的方式来导入:

    from sound.effects import *

  然后使用下面的方式来使用其中的成员:

    echo.echofilter(input,output,delay=0.7,atten=4)

 

      

 

以上是关于1.4.3 编写自己的模块和包的主要内容,如果未能解决你的问题,请参考以下文章

模块和包

python之模块和包

Python 2.7 学习笔记 模块和包

Python基础----import模块导入和包的调用

00.模块1.模块(Module)和包(Package)

Python 模块和包