剖析 globals()、locals() 和 vars() 之间的差异
在 Python 的命名空间操作领域内,存在三个基本函数:globals()、locals() 和 vars()。这些函数中的每一个都返回一个字典,但潜在的差异值得仔细检查。
globals()
一致地,globals()返回一个表示名称空间的字典当前模块。该字典包含该模块中定义的所有全局变量、函数和类。
locals()
与 globals() 不同,locals() 表现出动态行为。当在函数中调用时,它返回一个包含当前局部变量的字典,包括来自闭包变量的变量。然而,这个字典只是一个临时快照。只有调用 locals() 或访问当前堆栈帧的 f_locals 属性才会触发其内容的更新。对 locals() 字典或其相应变量的赋值不会交叉更新。
vars()
Vars() 也返回一个字典,但它的多功能性扩展到模块和函数名称空间之外。当不带参数调用时,vars() 的作用与 locals() 类似,返回当前命名空间的字典。但是,当对象作为参数传递时,vars() 会深入研究该对象的 dict 以检索其属性。
更新和效果
locals() 和 vars() 都不会自动使它们的字典随着命名空间的更改而保持最新。对变量的赋值不会更新字典,相反,对字典的更改不会传播到变量。但是,如果访问 f_locals(在 locals() 的情况下)或访问对象的 dict(在 vars() 的情况下),则字典可能会更新。
在总之,globals()、locals() 和 vars() 提供了三个用于在 Python 中操作名称空间的工具。了解它们的差异使开发人员能够精确和控制地浏览 Python 的运行时环境。
以上是Python 中的 globals()、locals() 和 vars() 之间的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!