码迷,mamicode.com
首页 > 编程语言 > 详细

python 多模块文件共享变量

时间:2017-12-11 11:16:09      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:test   blog   命名   引入   独立   一行代码   影响   字典   商业   

Python import 包的机制是,import进来的和默认的系统的module了,都放在sys.module这个字典里面.
多个py文件再次import的时候,会先去sys.module里面检查是否已经import了,如果已经import了,就不再重复import,否则就import进来

===

import glovar和from comon import glovar的命名空间是一样的,key都是glovar

from common.glovar import x 则不一样,test.py中这样from import,就相当于在test.py文件中写了一行代码x = 1,
此时x就是test自己命名空间中的变量。所以x只在test.py中有效,无聊自己如何对x修改,都无法影响glovar 中的x

#换种说法
from glovar import x
#等同于
improt glovar
x= glovar.x
#你调用x的时候,就是自己的命名空间中的x
#当你执行x=2时,完全影响不到glovar.x

下面是解释

#引入当前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不会再次导入,从而实现共享。



作者:coreki
链接:http://www.jianshu.com/p/4bb742d7d672
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

python 多模块文件共享变量

标签:test   blog   命名   引入   独立   一行代码   影响   字典   商业   

原文地址:http://www.cnblogs.com/feifeidxl/p/8021628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!