我在Py中很新,但我知道语法函数(param1,.. paramN),我无法理解:
globals()['z'] = 8
不能更“标准”?
globals('z') = 8
# or..
globals(param = 'z') = 8
编辑:感谢所有你的答案,我只有几个小时玩Python
在回顾中,它是“明显的”globals()返回一个实例,当我写全局变量('z')时我加入了索引但是Dict是由REFERENCE返回的,因为我可以改变它只是做:
globals()['z'] = 8
或者......只是其他成员建议:
x = globals();
x['z'] = 8
所有的“魔法”只是指向索引:)
globals
实际上是一个不带参数的函数,它返回一个dict
,它将标识符的名称映射到它们的值。
尝试在python解释器中键入globals()
并检查结果。
>>> z = 8
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'z': 8, '__doc__': None, '__package__': None}
注意'z': 8
部分。
但是如果你运行这段代码,你会看到它实际需要参数并改变dict / list / whatever:z = 7 globals()['z'] = 8 print(“z =”,z)#z = 8
是的,这是真的。 dict
返回的globals()
是python在某种意义上获取全局变量值的地方。修改dict会直接修改全局值。
作为一个FYI,你通常不应该做像globals()['z'] = 8
这样的事情。如果你已经在全局范围内(即,不在函数/类中),只要做z = 8
,并且在函数内部,执行:
def foo():
global z
z = 8