模块是python的一个重要概念
模块的表现形式是一个python文件代表一个模块
比较独特的一点是导入一个python模块,就创建了关于这个模块的一个对象。
在刚开始学python的时候,我怎么也想不通为什么可以模块名通过点号运算
引用模块中的函数和变量。
事实上,导入模块会做三个工作。
1.通过模块名搜索模块文件
2.将模块文件编译成字节码形式(可选)
3.执行模块文件字节码,并且创建模块对象
在第三个步骤中,将模块变量名指向模块对象
更深一步
import和from语句本质上是赋值语句
import sys
这个语句第一步创建了sys这个模块的模块对象,然后是sys这个变量指向模
块对象,完成赋值。然后就可以通过点号运算来获取变量
from xxx import abc
是类似的。不同之处是不需要通过点号运算来获取变量,直接使用变量就可以。
事实上,这个语句创建一个同名变量,来指向模块中的同名对象。
比如from xxx import abc,在模块xxx中有一个abc函数,现在创建了xxx模块,
该模块中就有abc函数对象,我们又在当前模块中创建了abc变量,将abc变量
指向xxx.abc这个对象