展开目录
  在Python中,可以将语句封装到方法(函数)中,将方法和属性封装到类中,将类封装到模块(对应于文件)中,将模块封装到包(对应于文件夹)中。
  在Python入门模块中介绍了模块的使用,这节介绍包的使用。
  在Python中,包package本质上就是一个文件夹,但是这个文件夹下必须存在一个名为__init__.py的文件。与文件夹类似,一个包可以包含另一个包或者多个包。
  包的结构如下图:
    package_name/
    ├── __init__.py
    ├── module1.py
    ├── module2.py
    ├── module3.py
    └── ...其它module或包

创建包
  创建一个包的步骤很简单:
    1.创建一个以包名为名称的目录,例如:mypackage;
    2.在目录中创建文件__init__.py,内容为空;
    3.在目录中创建py文件作为模块,例如:module.py,文件内容为定义的函数或者类;
    4.在目录中定义其它模块。
  经过以上步骤,一个名为mypackage的包就创建好了。
  以下是包的目录结构:
    mypackage/
    ├── __init__.py
    └── module1.py
    以下是各个文件的内容:
    __init__.py的内容为空
    module1.py的内容为:

def func1():
    print('Hello World!')

使用包
    要使用自定义的包,最简单的方法是在包的同级目录创建一个py文件,在这个py文件中可以通过from...import ...导入包中的函数和类,进而使用这些函数和类。
    在mypackage的同级目录创建文件test.py,内容如下:

from mypackage import module1

module1.func1()

  程序执行的输出为:

Hello World!


文件__init__.py
  文件__init__.py通常用来进行包的初始化工作,或者用来设置__all__的值,其内容也可以为空。
  可以在变量__all__中指定需要导出的模块。这样使用包时,就可以通过from package_name from *一次性导入这些模块了。


模块的搜索路径
  Python是根据搜索路径搜索模块和包的。搜索路径保存在sys.path中,可以使用以下命令查看:

>>> import sys
>>> sys.path
['', 'C:\\Python36-32\\python36.zip', 'C:\\Python36-32\\DLLs', 'C:\\Python36-32\
\lib', 'C:\\Python36-32', 'C:\\Python36-32\\lib\\site-packages']