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

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

local()函数返回一个字典,其中包含在局部作用域中声明的变量,而global()函数返回一个字典,其中包含在全局作用域中声明的变量。在全局作用域中,local()和global()函数都将相同的字典返回到全局命名空间中。为了注意这两个函数之间的区别,您可以在函数内调用它们。例如:

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

这将输出:

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

vars()函数将返回当前命名空间的字典(如果没有参数),或者返回参数的字典。local()和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)
Python

这将输出:

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

阅读更多:Python 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册