3-17 函数-命名空间

命名空间

又名name space ,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x =1,1存放在内存中,那名字x存放在哪里呢?名称空间正是存放x与1绑定关系的地方。

名称空间共3种,分别如下:

  • locals: 是函数内的名称空间,包括局部变量和形参
  • globals:全局变量,函数定义所在模块的名字空间
  • builtins:内置模块的名字空间

不同变量的作用域不同就是由这个变量所在的命名空间决定的。

作用域即范围:

  • 全局范围:全局存活,全局有效
  • 局部范围:临时存活,局部有效

查看作用域方法:globals()  locals()

>>> x = 1
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <cl
ass '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {
}, '__builtins__': <module 'builtins' (built-in)>, 'x': 1}

>>> locals() #现在所在的位置命名空间中的内容
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <cl
ass '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {
}, '__builtins__': <module 'builtins' (built-in)>, 'x': 1}
>>> __builtins__
<module 'builtins' (built-in)>
>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'Blocki
ngIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError
', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'Conne
ctionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentErro
r', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPoint
Error', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarni

猜你喜欢

转载自www.cnblogs.com/echo-kid-coding/p/11289250.html