Python 中有 globals() 函数的原因是什么?它只返回全局变量的字典,这些变量已经是全局的,所以它们可以在任何地方使用……我只是出于好奇,试图学习 python。
def F():
global x
x = 1
def G():
print(globals()["x"]) #will return value of global 'x', which is 1
def H():
print(x) #will also return value of global 'x', which, also, is 1
F()
G()
H()
我真的看不出这里的重点?只有当我有本地和全局变量时,我才需要它,它们的名称相同
def F():
global x
x = 1
def G():
x = 5
print(x) #5
print(globals()["x"]) #1
F()
G()
但是您永远不应该遇到两个变量同名的问题,并且需要在同一范围内使用它们。
最佳答案
Python 为程序员提供了大量用于自省(introspection)运行环境的工具。 globals()
只是其中之一,它在调试 session 中查看全局范围实际包含哪些对象非常有用。
我敢肯定,它背后的原理与使用 locals()
来查看函数中定义的变量,或者使用 dir
来查看函数中定义的变量的原理相同。查看模块的内容,或对象的属性。
来自 C++ 背景,我可以理解这些东西似乎没有必要。在静态链接、静态类型的环境中,它们绝对会。在这种情况下,在编译时就知道哪些变量是全局变量,一个对象将拥有哪些成员,甚至另一个编译单元导出了哪些名称。
然而,在动态语言中,这些东西不是固定不变的;它们可以根据代码的导入方式甚至在运行时进行更改。至少出于这个原因,在调试器中访问此类信息是非常宝贵的。
关于python - Python 中 globals() 的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12693606/