文章里面说globals和locals函数返回的是命名空间 - 一个存有对应作用域的所有的变量、方法的字典,注意这里和dir函数返回数组的不一样
class Test(object): """docstring for Test""" def __init__(self, arg): super(Test, self).__init__() self.arg = argprint(dir(), ...)# ['Test', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__'] Ellipsisprint(locals(), ...)# {'__name__': '__main__', '__doc__': None, '__cached__': None, 'Test':, '__spec__': None, '__package__': None, '__builtins__': , '__loader__': <_frozen_importlib.SourceFileLoader object at 0x01EF47B0>, '__file__': 'D:\\MARK\\temp.py'} Ellipsisprint(globals(), ...)# {'__name__': '__main__', '__doc__': None, '__cached__': None, 'Test': , '__spec__': None, '__package__': None, '__builtins__': , '__loader__': <_frozen_importlib.SourceFileLoader object at 0x01EF47B0>, '__file__': 'D:\\MARK\\temp.py'} Ellipsis
Note:
locals返回的是当前作用域的命名空间的copy,对他的修改不会影响原始的命名空间
globals返回的是全局的命名空间,对他的修改会直接影响全局命名空间