是什么区别globals(),locals()和vars()?他们回报了什么?结果更新是否有用?
Python dir(…)和vars(…).keys()Python 之间有区别吗?
(我希望有区别,因为否则这会破坏"一种方法去做"原则...... :)
根据Python文档,两者dir()(没有args)并locals()评估调用的变量列表local scope.第一个返回名称列表,第二个返回名称 - 值对的字典.这是唯一的区别吗?这总是有效吗?
assert dir() == sorted( locals().keys() )
Run Code Online (Sandbox Code Playgroud) 在我的 Python3 学习中,在尝试 globals() 和 locals() 的同时,我制作了一个非常基本的、独立的 Python 程序,并收到了我要求专家解释的结果。
然后我在我的 Python 程序(任何)中执行了相同的 2 个函数,并在我的程序中收到了许多(全部?)值的列表,无论它是声明为局部的、全局的还是非声明的。 我的理解是 globals() 函数包含声明为全局变量的所有值的列表(本地变量相同),但根据我的观察,结果显示出不同的东西。 谁能解释我所看到的以及为什么?这是程序和结果:
蟒蛇程序:
print("Globals=",globals())
print("Locals=",locals())
Run Code Online (Sandbox Code Playgroud)
结果(对于上述 2 行程序):
=============== RESTART: /home/pi/Junk/globals_locals_test.py ==========
Globals= {'__package__': None, '__spec__': None, '__loader__': <class '
_frozen_importlib.BuiltinImporter'>, '__doc__': None, '__file__': '
/home/pi/Junk/globals_locals_test.py', '__builtins__': <module 'builtins'
(built-in)>, '__name__': '__main__'}
Locals= {'__package__': None, '__spec__': None, '__loader__': <class '
_frozen_importlib.BuiltinImporter'>, '__doc__': None, '__file__': '
/home/pi/Junk/globals_locals_test.py', '__builtins__': <module 'builtins'
(built-in)>, '__name__': '__main__'}
>>>
Run Code Online (Sandbox Code Playgroud)