gpt4 book ai didi

python - 访问本地环境中的全局变量

转载 作者:行者123 更新时间:2023-12-01 04:09:24 24 4
gpt4 key购买 nike

考虑这段代码:

Var='global'
def func():
Var='local'
#global Var
print Var

即使我有一个同名的局部变量,我也尝试打印全局变量。但是,当我使用关键字 global 时,它会给我一个错误。

有办法做到这一点吗?

我也希望能解释一下为什么 global 会出错。

最佳答案

使用globals()这是一个内置函数。来自 globals() 的文档:

Return a dictionary representing the current global symbol table. This is always the dictionary of the current module (inside a function or method, this is the module where it is defined, not the module from which it is called).

Var='global'

def func():
Var='local'
print(globals()['Var'])
<小时/>

回复您的评论:

首先尝试这个:

Var='global'

def func():
Var='local'
global Var
Var = 'Global'
print(Var)
func()

print(Var)

惊讶吗?这里发生的事情是,Python 假设在函数内分配给的任何变量名称都是该函数的本地变量名称,除非另有明确说明。如果它仅从名称读取,并且名称在本地不存在,它将尝试在任何包含范围(例如模块的全局范围)中查找名称)。在您的情况下,有一个局部变量 Var 与全局 Var 同名,因此全局变量被隐藏。由于 Var 存在于本地,因此不需要在任何包含范围内查找它,因此使用本地变量。但是,当您更改 Var 的值时(使用global Var 语句),Python 使用全局变量,可以通过打印 看到>global Var 在全局范围内。事实上,global 关键字实际上用于修改任何局部子作用域中的全局变量。请参阅here 。希望清楚!

P.S.:我从Jeff Shannon's收集了知识回答。

关于python - 访问本地环境中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com