考虑以下代码:
Var='global'
def func():
Var='local'
#global Var
print Var
我试图打印全局变量,即使我有一个具有相同名称的局部变量。但是,当我使用关键字global时,它给了我一个错误。
有没有办法做到这一点?
我也希望解释为什么global会出错。
返回表示当前全局符号表的字典。这始终是当前模块的字典(在函数或方法内部,这是定义它的模块,而不是从中调用它的模块)。
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
与global相同名称的局部变量Var
,因此全局变量被遮盖了。由于Var
本地存在,因此不需要在任何包含范围中查找它,因此使用了局部变量。但是,当您更改Var
(usingglobal Var
语句)的值时,Python使用全局变量,可以通过打印来查看global Var
在全球范围内。实际上,实际上,该global
关键字用于从任何局部子作用域修改全局变量。看这里。希望清楚!
PS:我从Jeff Shannon的答案中收集了知识。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句