首先,在python的5文件里,共享变量x存在glovar.py里面,需要在任意模块都能更改,更改后任意模块获取到的值都相同,这就是多模块文件共享一个变量

#5个文件的路径
c:\test\main.py
c:\test\show.py
c:\test\test.py
c:\test\common\__init__.py #空文件
c:\test\common\glovar.py
c:\test\common\calc.py
#glovar.py
x = 1
#show.py
from comon import glovar
class Show:def showchange(self):if glovar.x!=1:print 'show x change'else:print 'show x=1'
#test.py
from comon.glovar import x
class Test:def testchange(self):if x!=1:print 'test x change'else:print 'test x=1'
#calc.py
import glovar
class Calc:def add(self):glovar.x+=1
#main.py
from comon import glovarc = Calc()
c.add()s = Show()
s.showchange()t = Test()
t.testchange()

运行main.py

#输出
show x change
test x=1

上面这些文件,除了test.py失败,其他文件都能共享变量能成功,是因为python的命名空间相同,靠的就是import用正确
来看看这三种不同

import glovar
from comon import glovar
from common.glovar import x

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

Python多模块文件共享变量相关推荐

  1. Python os模块文件操作(二)

    Python os模块文件操作(二) os模块对文件夹和文件的操作很多.可以先看: https://blog.csdn.net/weixin_43790276/article/details/9867 ...

  2. Python os模块文件操作(一)

    Python os模块文件操作(一) 一.文件描述符 在使用代码对文件进行操作时,为了指定操作的文件,避免不了要使用文件描述符,所以我们先介绍什么是文件描述符. 操作系统为了高效管理已经被打开的文件, ...

  3. python中模块文件的扩展名不一定是py_python模块和python包有什么区别?

    python模块和python包有什么区别? 另请参见:"package"和"module"(其他语言)之间的区别是什么? 我可能错了,但对我来说:模块基本上是 ...

  4. python中模块文件的扩展名不一定是py_跟老齐学Python之Import 模块

    认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块).为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: ...

  5. python中模块文件的扩展名一定是py_Python 模块(Module)

    1.什么是模块(Module)? 考虑模块与代码库相同. 包含要包含在应用程序中的一组功能的文件. 2.定义模块(Module) 要创建模块,只需将所需的代码保存在文件扩展名为.py的文件中: 例如: ...

  6. python创建模块文件夹_python文件、文件夹、压缩包处理模块-shutil模块

    shutil模块 高级的文件.文件夹.压缩包 处理模块 本节内容基本在linux下python交互环境实现 复制移动文件.文件夹 将文件内容拷贝到另一个文件中,可以部分内容 格式如下: ``` shu ...

  7. python复制文件shutil_Python常用模块——文件复制模块shutil

    Python常用模块--文件复制模块shutil shutil模块 高级的文件.文件夹.压缩包处理模块 shutil.copyfileobj(fsrc, fdst) 将文件内容拷贝到另一个文件中 im ...

  8. python用什么来写模块-用Python编写模块有何技巧?

    随着对Python学习的深入,其优点日渐突出,让读者也感觉到Python的强大了,强大感觉之一就是"模块自信",因为Python不仅有自带的模块(称之为标准库),还有海量的第三方模 ...

  9. 用Tkinter打造自己的Python IDE开发工具(6)Python多文件共享变量与智能插件设计

    用Tkinter打造自己的Python IDE开发工具(6)Python多文件共享变量与智能插件设计 在Python中实现多个文件共享变量,即又可以获取变量值,也可以修改变量的值.有两种方式. 一是作 ...

最新文章

  1. python编程问题--第二次
  2. Vi/Vim查找替换使用方法
  3. Git复习(十一)之常见命令用法
  4. kafka日志和数据分离
  5. RxSwift之环境的搭建配置与基础控件的使用
  6. RabbitMQ延迟消费和重复消费
  7. python3 csv读写_在python3中读取、更新和写入更新的CSV文件
  8. 解调去载波后均衡信道与实际信道的关系
  9. 华为pap和chap的配置。
  10. Menelaus定理与证明
  11. Algorand基金会与Brixton Pound达成合作关系,将开发布里克斯顿英镑的通证化版本
  12. Python办公自动化--Word、Excel、PDF
  13. [2018.10.10 T3] 三米诺
  14. HP Loadrunner 11下载地址
  15. Gmail,OutLook邮箱基于Oauth2.0协议授权登录邮箱客户端
  16. usb无线网卡安装在服务器上,外置无线网卡怎么安装_外置无线网卡怎么用-win7之家...
  17. Strick mode 和Trace View使用
  18. java access group by 用法_详解SQL中Group By的用法
  19. 游戏对战平台搭建要选什么服务器
  20. Python——pyqt5的计算器(源码+打包)

热门文章

  1. 以云原生的名义,举办一次技术聚会
  2. Soul网关发布里程碑的2.3.0版本,新增支持GRPC,Tars,Sofa协议
  3. 皮一皮:这孩子想必长大了一定是个程序猿...
  4. 皮一皮:下班的渴望...
  5. 到底一台服务器能够支持多少TCP并发连接?
  6. java memcachedclient_Java memcached client怎样建立长连接
  7. 轻量级人脸属性Slim-CNN
  8. python 点计算角度
  9. onedrive下载
  10. QThread: Destroyed while thread is still running