【摘要】:在Python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称为作用域。由于Python一切皆对象,所以在Python中变量名被视为字符串对象。例如:表示建立字符串对象a与数值对象10之间的对应关系。Python的作用域就是对多个键-值对的分组划分,即键-值对的集合。
在Python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称为作用域。命名空间是对变量名的分组划分,不同作用域的相同名称的变量视为两个独立的变量,因此位于不同作用域(即命名空间)的变量名可以重复。
由于Python一切皆对象,所以在Python中变量名被视为字符串对象。
例如:
表示建立字符串对象a与数值对象10之间的对应关系。由于这是一种映射关系,所以可以使用键-值的形式来表示,即{name:object}。
Python的作用域就是对多个键-值对的分组划分,即键-值对的集合。因此Python的作用域就是一个字典,字典内保存了变量名称与对象之间的映射关系,因此,查找变量名就是在作用域字典中查找键-值对。
Python有多个作用域,LEGB就是用来规定在多个作用域中查找变量顺序的规则:(www.xing528.com)
L——Local(function):函数内部的作用域,包括局部变量和参数;
E——Enclosingfunctionlocals:外层嵌套函数的作用域,常见的是闭包函数的外层函数;
G——Global(module):函数定义所在模块(文件)的全局作用域;
B——Builtin(Python):Python内置模块的作用域。
LEGB规定了查找一个变量的顺序为:L→E→G→B,即Pyton检索变量的时候,会优先在函数内部的作用域中查找,如果没有找到,去外层嵌套函数的作用域中找,再找不到,就会去全局作用域中找,最后再去内置模块的作用域中找。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。