我试图在某些函数中声明一些全局变量,并将带有这些函数的文件导入另一个函数。但是,我发现在第二个文件中运行该函数不会创建全局变量。我尝试使用相同的名称创建另一个变量,但是当我打印出变量时,它会打印出第二个文件的值,而不是全局值
globals.py
def default():
global value
value = 1
main.py
from globals import *
value = 0
def main():
default()
print value
if __name__=='__main__':
main()
这将打印0.如果我在main中没有value = 0
,则程序将出错(值未定义)。
如果我在函数之外的value
中声明globals.py
,main.py
将采用全局value
的值,而不是{{1}中设置的值}}
在python中使default()
成为全局变量的正确方法是什么?
答案 0 :(得分:5)
Python中的Globals只是他们模块的全局。没有可以修改的名称对整个过程是全局的。
你可以用这个完成你想要的东西:
globals.py:
value = 0
def default():
global value
value = 1
main.py:
import globals
def main():
globals.default()
print globals.value
if __name__ == "__main__":
main()
我不知道这样的全球化是否是解决问题的最佳方式。