1.可以导入的对象类型:
- 模块文件(单独的python文件:.py, .pyc, .pyo, .pyd)
- 包(包含多个模块)
- C或C++扩展(已编译为共享库或DLL文件:Linux中的shared object:.so,Win中的动态链接库Dynamic Link Librar:.dll)
- 内建模块(使用C编写并已链接到Python解释器中)
2.导入包中模块的方法
# 导入模块文件
import Graphics.Primitive.fill
# 导入模块Graphics.Primitive.fill,只能以全名访问模块属性,例如:
Graphics.Primitive.fill.floodfill(img, x, y, color)
# 从包中导入模块:.py文件
from Graphics.Primitive import fill
# 导入模块fill, 只能以 “fill.属性名” 这种方式访问模块属性,例如:
fill.floodfill(img, x, y, color)
# 从模块中(.py文件)导入函数
from Graphics.Primitive.fill import floodfill
# 导入模块fill, 并将函数floodfill放入当前名称空间,直接访问被导入的属性,例如:
floodfill(img, x, y, color)
3.导入模块的解释器操作
在导入模块时,解释器做以下工作:
已导入模块的名称创建新的命名空间,通过该命名空间就可以访问导入模块的属性和方法。
在新创建的命名空间中执行源代码文件。
创建一个名为源代码文件的对象,该对象引用模块的名字空间,这样就可以通过这个对象访问模块中的函数及变量
import 语句可以在程序的任何位置使用,你可以在程序中多次导入同一个模块,但模块中的代码仅仅在该模块被首次导入时执行。后面的import语句只是简单的创建一个到模块名字空间的引用而已。
sys.modules字典中保存着所有被导入模块的模块名到模块对象的映射。