我在一个文件中有一个函数:
global_value = 100 #defualt
def function(new_value):
global global_value
print(global_value,new_value)
global_value = new_value函数()接受一个值,将其与global_value进行比较,然后将global_value设置为new_value。
我不是在文件中使用这个函数,而是导入它。
(file2:)
from file import *
value = input("enter value")
function(value)
print(global_value)函数工作正常,但是在最后global_value被显示为等于100 (它是defualt ),而不是输入。我还能做些什么来使global_value在file2中发生变化呢?
谢谢。
发布于 2019-03-15 12:40:45
Python中的全局变量并不是真正的全局变量;它们的作用域是特定的模块。
在执行from file import *之后,您有两个变量:file.global_variable (它是file.function更新的变量)和当前模块中的一个新global_variable,它使用file.global_variable的原始值初始化,但是function从未更新过。
每个函数都包含对定义函数的全局范围的引用。在Python2中是file.function.func_globals;在Python3中是tmp.function.__globals__。这是查找任何“全局”变量的作用域,而不是调用函数的作用域。
在第二个文件中添加一个普通的import file,然后运行print(global_variable, file.global_variable)来查看差异。
https://stackoverflow.com/questions/55182583
复制相似问题