1. 定义: 函数中变量取值的地方;
2. 函数中的变量名除了特殊声明为全局变量或本地变量, 否则均为局部变量;
3. 变量的作用域解析原则: LEGB 原则, 即:
? 变量名引进分为三个作用域进行查找, 首先是本地, 再是函数内 (如果存在), 之后才是全局变量, 最后是内置作用域 (内置作用域: 内置函数所在模块的范围);
? 在默认情况下, 变量名赋值会创建或者改变本地已有的变量;
? 全局声明或非本地变量声明会将赋值的变量名映射到模块文件的内部作用域;
LEGB 机制:
?Python 搜索的四个作用域, 最先是本地作用域 (L); 之后是上一层结构中的 def 所在作用域 (E, 函数嵌套才会出现), 再是全局作用域 (G), 最后才是内置作用域 (B)
?Python 会在第一处能够找到这个变量名的位置停下来, 如果 python 在此次搜索中没有找到该变量, 会报错;(即未定义)
来源: http://www.bubuko.com/infodetail-2550572.html