Python的变量名解机制有时称为LEGB法则,这也是由作用域的命令而来的。
- 当在函数中使用未认证的变量名时,Python搜索4个作用域【本地作用域(L),之后是上一层结构中的def或lambda的本地作用域(E),之后是全局作用域(G),最后是内置作用域(B)】并且在第一次能够找到这个变量名的地方停下来。如果变量名在这个搜索中没有找到,Python回报错。
- 当在函数中给一个变量名赋值时(而不是在一个表达式中对其进行引用),Python总是创建或改变本地作用域的变量,除非它已经在那个函数中声明为全局变量。
- 当在函数之外给一个变量名赋值时(也就是,在一个模块文件的顶层,或者是在交互提示模式下),本地作用域与全局作用域(这个模块的命名空间)是相同的。
本文介绍了Python中的LEGB法则,即变量查找遵循的本地(L)、封闭(E)、全局(G)、内置(B)作用域顺序。文章解释了如何在函数内部使用及定义变量,并讨论了在不同作用域内变量的行为。
422

被折叠的 条评论
为什么被折叠?



