本节主要内容:
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!!
---------------------------------------