我在Py中很新,但我知道语法功能(param1,.. paramN),我无法理解:
globals()['z'] = 8
无法更多'标准' ?
globals('z') = 8
# or..
globals(param = 'z') = 8
编辑:感谢所有人的回答,我只有几个小时玩Python
在回顾中,它很明显"我写了全局变量时,globals()返回一个实例并且我加入了索引(' z')但是由于我可以改变它而直接返回Dict:
globals()['z'] = 8
或......只是其他成员建议:
x = globals();
x['z'] = 8
所有"魔法"只是指向索引的指针:)
答案 0 :(得分:1)
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()[&#39; z&#39;] = 8 print(&#34; z = &#34;,z)#z = 8
dict
返回的globals()
是,在某种意义上,python用于获取全局变量的值。修改dict会直接修改全局值。
作为一个FYI,你通常不应该做globals()['z'] = 8
之类的事情。如果您已经在全局范围内(即不在函数/类中),并且在函数内部,请执行z = 8
:
def foo():
global z
z = 8