我在文件中有一个功能:
global_value = 100 #defualt
def function(new_value):
global global_value
print(global_value,new_value)
global_value = new_value
function()接受一个值,将其比较为global_value,然后将global_value设置为new_value。
我没有在文件中使用此功能,而是将其导入。
(文件2:)
from file import *
value = input("enter value")
function(value)
print(global_value)
该函数正常运行,但是在最后显示global_value等于100(它的默认值),而不是输入。 我该怎么做才能在文件2中更改global_value?
谢谢。
答案 0 :(得分:2)
Python中的全局变量并不是真正的全局变量。它们仅限于特定模块。
执行from file import *
之后,您有两个变量; file.global_variable
(这是file.function
所更新的),以及当前模块中的新global_variable
,它使用file.global_variable
的原始值初始化了 ,但永远不会由function
更新。
每个函数都包含对定义的全局范围的引用。在Python 2中,它是file.function.func_globals
;在Python 3中,其tmp.function.__globals__
。那是在其中查找其任何“全局”变量的范围,而不是在其中称为的函数的范围。
在第二个文件中添加普通的import file
,然后运行print(global_variable, file.global_variable)
来查看区别。