本节主要内容:
pythonmokuai/ target=_blank class=infotextkey>python模块和包
 - 引入其他模块
    - __name__
 - 搜索顺序
    - 自动编译被导入的模块
    - 搜索module的顺序???(待补充)
模块和包
1. 模块
 1.1 什么是模块
    -模块是python组织代码的基本方式
    -python的脚本都是用扩展名py的文本文件保存的.
     一个脚本可以单独运行, 也可以导入另一个脚本中运行.
     当脚本被导入运行时, 我们将其称之为模块(module)
 1.2 模块的导入
    -模块名与脚本的文件名相同
     -如,编写了 m1.py的脚本, 可以在 m2.py中以 import m1  导入
  
  1.2.1 导入的方式
   
1.2.2 举例 import
   1.2.2.1 导入-执行整个脚本
    目标: 在m2中导入m1, 执行m2
   
-----------m1.py-----------------------
    print "hello, I'm 1.py!!"
    ---------------------------------------
    -----------m2.py-----------------------
    import m1
    ---------------------------------------
    -----------output-----------------------
    E:desktoppythonpy_srcmyPack>m2.py
    hello, I'm 1.py!!
 
    ---------------------------------------
    注: 运行完毕后会生成m2.pyc的二进制文件,以便下次import
1.2.2.2 导入-调用导入模块的函数
    目标: 在m4中导入m3, 执行m4
    说明: 内置属性 __name__ 存放当前正在运行的模块名
          "__main__" 表示当前模块  
   
-----------m3.py-----------------------
    def add(num1, num2) :
        print num1 + num2
    def subtract(num1, num2) :
        print num1 - num2
    if __name__ == "__main__" :
        print __name__, " is running !!!"
        add(1, 2)
    ---------------------------------------
    -----------m4.py-----------------------
    import m3
    m3.add(10, 20)
    ---------------------------------------
    -----------output-----------------------
    E:desktoppythonpy_srcmyPack>m3.py
    __main__  is running !!!
    3
    E:desktoppythonpy_srcmyPack>m4.py
    30
    ---------------------------------------
  1.2.3 举例 import as
   
-----------m3.py-----------------------
    def add(num1, num2) :
        print num1 + num2
    def subtract(num1, num2) :
        print num1 - num2
    if __name__ == "__main__" :
        print __name__, " is running !!!"
        add(1, 2)
    ---------------------------------------
    -----------m5.py-----------------------
    import m3 as moduleThree
    moduleThree.add(100, 200)
    ---------------------------------------
    -----------output-----------------------
    E:desktoppythonpy_srcmyPack>m5.py
    300
    ---------------------------------------
  1.2.4 举例 from  import 
   
-----------m3.py-----------------------
    def add(num1, num2) :
        print num1 + num2
    def subtract(num1, num2) :
        print num1 - num2
    if __name__ == "__main__" :
        print __name__, " is running !!!"
        add(1, 2)
    ---------------------------------------
    -----------m6.py-----------------------
    from m3 import add
    add(11, 22)
    ---------------------------------------
    -----------output-----------------------
    E:desktoppythonpy_srcmyPack>m6.py
    33
    ---------------------------------------
2. 包 
 2.1 什么是包
     -python的模块可以按目录组织为包,
      包里必须要有 __init__.py, 存放包的信息
     -即, 包就是文件夹, 用来组织模块的
 2.2 创建一个简单包的步骤
     - 创建 文件夹
     - 在该文件夹里 创建空的 __init__.py 文件
 
 2.3 使用包
  2.3.1 准备
     - 在 myPack文件夹 里 新建 __init__.py 文件(空的)
     - 在 myPack文件夹 里 新建 m1.py 文件
     - 在 与myPack文件夹 同级的目录 新新 m2.py文件
  2.3.2 组织结构
        py_src
          |-- m2.py
          |-- myPack
                |-- __init__.py
                |-- m1.py
 
  2.3.3 程序
   
-----------m1.py-----------------------
    print "hello, I'm 1.py!!"
    ---------------------------------------
    -----------m2.py-----------------------
    import myPack.m1
    ---------------------------------------
    -----------output-----------------------
    E:desktoppythonpy_src>m2.py
    hello, I'm 1.py!!
    ---------------------------------------