首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么导入函数定义的全局变量不改变?

为什么导入函数定义的全局变量不改变?
EN

Stack Overflow用户
提问于 2019-03-15 12:25:45
回答 1查看 75关注 0票数 0

我在一个文件中有一个函数:

代码语言:javascript
复制
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:)

代码语言:javascript
复制
from file import *
value = input("enter value")
function(value)
print(global_value)

函数工作正常,但是在最后global_value被显示为等于100 (它是defualt ),而不是输入。我还能做些什么来使global_value在file2中发生变化呢?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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)来查看差异。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55182583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档