模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。
一.为什么要使用模块
<1>代码重用
<2>系统命名空间的划分
这一点对有效避免了变量名的冲突很有帮助。
<3>共享服务和数据
二.导入模块实例
#b.py
def spam(text):
print(text,'spam')
假设a.py想使用spam函数
#a.py
import b
b.spam('hello')
hello spam
三.import如何工作
<1>找到模块文件
<2>编译成位码(需要时)
<3>执行模块的代码来创建其所定的对象
四.常用语句
import module_name
from module_name import foo
区别就是import会读取整个模块,from将获取模块特定的变量名,此时使用时不用输入module_name.直接可以使用。
from module_name import *
当我们使用*时会取得模块顶层所有赋了值的变量名的拷贝。
注:import from都是赋值语句,在导入的一个变量名修改引用的数据时,原数据也会发生改变。
#a.py
x = 1
y = [1,2]
#b.py
from a import x,y
>>> x = 10
>>> y[0] = 20
import a
>>> a.x
1
>>> a.y
[20,2]
五、模块包的导入
import dir1.dir2.mod
from dir1.dir2.mod import x
补充:
为了区分包和模块,包中会有一个__init__.py
动态导入模块
try:
from simplejson import json
except ImportError:
import json
print json.dumps({'python':2.7})
参考<<learning python>>