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}
广告