全局变量和模块(简单示例帮助)Python

Sea*_*Cav 2 python import module global-variables

好吧我正在做一些线程,我想当我开始做线程时我假设你不能返回像定义这样的值(它的结束时间和我的大脑即将死亡所以这可能是不正确的我应该开始去回去摆脱全局变量)

无论如何,我有一个测试程序来弄清楚为什么我不能模块化我的代码

一个名为config.py的文件

a_variable=0
Run Code Online (Sandbox Code Playgroud)

一个名为test_for_sean.py的文件

from config import *
def blah():
  global a_variable
  a_variable=14
  return 0
Run Code Online (Sandbox Code Playgroud)

一个名为main.py的文件

from config import *
from test_for_sean import *
print a_variable #this prints correctly
blah()
print a_variable #this is still printing 0....
Run Code Online (Sandbox Code Playgroud)

有人把我联系起来,所以我不会自杀

And*_*ark 5

从模块导入变量时,名称将导入到当前模块的命名空间中,它们不会在两个模块之间共享.该global关键字不允许您共享模块之间的名字,它只是让你分配给在该模块的全球范围内的名称.

要在模块之间实际共享变量,您需要通过其模块访问变量:

一个名为config.py的文件

a_variable=0
Run Code Online (Sandbox Code Playgroud)

一个名为test_for_sean.py的文件

import config
def blah():
  config.a_variable=14
  return 0
Run Code Online (Sandbox Code Playgroud)

一个名为main.py的文件

import config
from test_for_sean import blah
print config.a_variable # prints 0
blah()
print config.a_variable # prints 14
Run Code Online (Sandbox Code Playgroud)