编辑
2026-04-01
undefined
00

目录

基本概念
使用及示例
LEGB规则

基本概念

命名空间指的是变量存储的位置,每一个变量都需要存储到指定的命名空间当中。每一个作用域都会有一个对应的命名空间。

全局命名空间,用来保存全局变量,函数命名空间用来保存函数中的变量。

命名空间实际上就是一个字典,是一个专门用来存储变量的字典。

使用及示例

locals()用来获取当前作用域的命名空间。如果在全局作用域中调用locals()则获取全局命名空间,如果在函数作用域中调用locals()则获取函数命名空间,返回的是一个字典。

globals()用来在任意位置获取全局命名空间。

scope = locals()  # h获取当前作用域的命名空间 print(scope) scope['a'] = 100  # 相当于在全局中创建了a变量 print(scope) def fn(): a = 10 scope = locals()  # 获取函数的命名空间 print(scope)  # {'a': 10} fn() print(globals())  # 在任意位置获取全局命名空间

LEGB规则

Python在查找“名称”时,是按照LEGB规则查找的:Local→Enclosed→Global→Built in

  • Local指函数或者类的方法内部
  • Enclosed 指嵌套函数(一个函数包裹另一个函数,闭包)
  • Global指模块中全局变量
  • Buit in指Python为自己保留的特殊名称

本文作者:a

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!