python globals和locals

python

文章里面说globals和locals函数返回的是命名空间 - 一个存有对应作用域的所有的变量、方法的字典,注意这里和dir函数返回数组的不一样
Python命名空间的本质

class Test(object):

"""docstring for Test"""

def __init__(self, arg):

super(Test, self).__init__()

self.arg = arg

print(dir(), ...)

# ['Test', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__'] Ellipsis

print(locals(), ...)

# {'__name__': '__main__', '__doc__': None, '__cached__': None, 'Test': <class '__main__.Test'>, '__spec__': None, '__package__': None, '__builtins__': <module 'builtins' (built-in)>, '__loader__': <_frozen_importlib.SourceFileLoader object at 0x01EF47B0>, '__file__': 'D:\\MARK\\temp.py'} Ellipsis

print(globals(), ...)

# {'__name__': '__main__', '__doc__': None, '__cached__': None, 'Test': <class '__main__.Test'>, '__spec__': None, '__package__': None, '__builtins__': <module 'builtins' (built-in)>, '__loader__': <_frozen_importlib.SourceFileLoader object at 0x01EF47B0>, '__file__': 'D:\\MARK\\temp.py'} Ellipsis

Note:

locals返回的是当前作用域的命名空间的copy,对他的修改不会影响原始的命名空间

globals返回的是全局的命名空间,对他的修改会直接影响全局命名空间

以上是 python globals和locals 的全部内容, 来源链接: utcz.com/z/387328.html

回到顶部