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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. 利用JavaScript来实现用动态检验密码强度
  2. python操作excel表格详解(xlrd/xlwt)
  3. 使用Android studio创建的AIDL编译时找不到自定义类的解决办法
  4. JavaScript脚本语言基础(一)
  5. ArcGIS发布地图服务
  6. (七)CSS定位(Positioning)
  7. Ioc容器Autofac系列(2)-- asp.net mvc中整合autofac
  8. Static NAT with iptables on Linux
  9. nopCommerce_3.00-Nop.Core.Caching
  10. 关于Linux下面msyql安装后并未设置初始密码,但是登录报错“Access denied for user 'root'@'localhost' (using password: NO)”的解决方案
  11. 基于微信公众平台的开发(清华大学第二讲)_Alien的笔记
  12. discuz!代码内置颜色大全(收藏)
  13. 手机web下拉加载
  14. cegui-0.8.2编译过程详解
  15. 关于Vuex的初步使用
  16. Linux-yum只下载不安装
  17. Centos7与Windows10添加Windows10启动项并设置为默认启动
  18. 【代码笔记】iOS-iphone开发之获取系统字体
  19. 判断html是否含有图片
  20. 使开发更便捷——Visual Studio 使用技巧——快捷键

热门文章

  1. Lua学习四----------Lua变量
  2. XFire Web Service客户端开发
  3. js判断参数类型
  4. 设置mysql隔离级别
  5. 首选项框架PreferenceFragment部分源代码分析
  6. c# combobox 绑定枚举方式
  7. 更精炼更专注的RTMPClient客户端EasyRTMPClient,满足直播、转发、分析等各种需求
  8. 在嵌入式、海思、ARM中进行统一的音频AAC编码的必要性
  9. iOS开发常用第三方框架
  10. VC里OnPaint几点要注意的地方(没有invalidate,系统认为窗口没有更新的必要,于是就对发来的WM_PAINT消息不理不睬)