Python 中 dir()、globals() 和 locals() 函数的区别是什么?


locals() 返回一个包含在局部作用域中声明的变量的字典,而 globals() 返回一个包含在全局作用域中声明的变量的字典。在全局作用域中,locals() 和 globals() 返回全局命名空间的同一个字典。要观察这两个函数的区别,可以在函数内部调用它们。例如:

def fun():
    var = 123
    print "Locals: ", locals()
    print "Vars: ", vars()
    print "Globals: ", globals()
fun()

这将给出以下输出:

Locals:  {'var': 123}
Globals:  {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', 'fun': <function fun at 0x00000000
037E3DD8>, '__doc__': None, '__package__': None}

vars() 函数返回当前命名空间的字典(如果未带参数调用)或参数的字典。locals() 和 vars() 之间的主要区别在于 vars() 也可以接受一个参数并返回请求对象的字典。例如,如果想要对象的属性以字典的形式显示,可以传入该对象并获取该实例的属性字典。

对于对象来说,vars() 函数类似于对象的 __dict__ 属性。__dict__ 返回对象的所有已定义属性。例如:

class A():
    def __init__(self, id):
        self.id = id
a = A(1)
print "__dict__: ", a.__dict__
print "vars(a): ", vars(a)

这将给出以下输出:

__dict__:  {'id': 1}
vars(a):  {'id': 1}

更新于:2019年9月30日

601 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.