Python 中的 globals()、locals() 和 vars() 有什么不同?

Susan Sarandon
发布: 2024-11-17 02:16:03
原创
305 人浏览过

How Do globals(), locals(), and vars() Differ in Python?

探索 globals()、locals() 和 vars() 的细微差别

Python 提供了三个内省函数,可以深入了解当前命名空间:globals()、locals() 和 vars()。每个都返回一个包含特定信息的字典。

globals()

globals() 始终返回当前模块名称空间的字典。它提供对模块内所有全局定义名称的访问。

locals()

locals() 是动态的,其行为取决于范围。

  • 在函数内: locals() 返回函数名称空间的字典。它包括调用时的局部变量以及闭包变量。对字典的更新反映在局部变量中。但是,对返回字典的赋值不会修改局部变量。

例如,在函数中:

def example():
    x = 1
    l = locals()
    l['x'] = 3
    print(x)  # Outputs 1, not 3
登录后复制
  • 函数外部: locals() 返回实际的命名空间字典。对字典所做的更改会反映在命名空间中,反之亦然。

例如:

class Test:
    a = 'one'
    huh = locals()
    b = 'two'
    huh['c'] = 'three'
    print(huh)  # Outputs {'a': 'one', 'b': 'two', 'c': 'three', 'huh': {...}}
登录后复制

vars()

vars() 接受一个对象作为其参数并返回其 dict 属性。通常,对象的 dict 存储其属性数据。因此,向 vars() 提供对象可以访问其属性。

class Test:
    a = 'one'
    b = 'two'
    huh = vars(self)
    c = 'three'
    huh['d'] = 'four'
登录后复制

在此示例中,vars(self) 返回 Test 实例的 dict 属性,允许访问它的属性如“a”、“b”和“c”。

以上是Python 中的 globals()、locals() 和 vars() 有什么不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板