Python import 包的机制是,import进来的和默认的系统的module了,都放在sys.module这个字典里面.
多个py文件再次import的时候,会先去sys.module里面检查是否已经import了,若是已经import了,就再也不重复import,不然就import进来python
===spa
import glovar和from comon import glovar的命名空间是同样的,key都是glovarcode
from common.glovar import x 则不同,test.py中这样from import,就至关于在test.py文件中写了一行代码x = 1,
此时x就是test本身命名空间中的变量。因此x只在test.py中有效,无聊本身如何对x修改,都没法影响glovar 中的xclass
#换种说法 from glovar import x #等同于 improt glovar x= glovar.x #你调用x的时候,就是本身的命名空间中的x #当你执行x=2时,彻底影响不到glovar.x
下面是解释test
#引入当前glovar文件,此时namespace是glovar import glovar #从common目录中引入glovar,此时namespace是glovar from comon import glovar #从common目录中的glovar文件中引入x=1,此时namespace就是引用者,也就是上面的test.py from common.glovar import x
因此,若是须要共享变量,就不要使用from file import x这种形式,而是使用import file,而后就能够经过file.x来使用,而后file.x='abc'能够进行修改。这样都这样处理全局性的变量就能够共享的。也就是保持一个独立的namespace,这样python不会再次导入,从而实现共享。import
做者:coreki连接:http://www.jianshu.com/p/4bb742d7d672來源:简书著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。