理解Python中的作用域规则 理解Python双星和单星对参数的作用 Python中yield关键字的作用 理解Python中的作用域规则 LEGB规则 L,Local - 在函数(def或lambda)中以任何方式分配的名称,并且在该函数中未声明为全局。 E,Enclosing-function locals - 从内到外的任何和所有静态封闭函数(def或lambda)的局部范围中的名称。 G,全局(模块) - 在模块文件的顶层分配的名称,或通过在文件中执行global语句def。 B,内置(Python)的-名内置名称模块预先分配:open,range,SyntaxError,... 所以,在这种情况下 code1 class Foo: code2 def spam..... code3 for code4..: code5 x() for循环没有自己的命名空间。在LEGB顺序中,范围将是 L:本地,在def spam(中code3,code 4,code5)。 E:封闭功能,任何封闭功能(如果整个示例在另一个中def) G:全球。x模块(code1)中是否有全局声明? B:xPython中的任何内置函数。 x永远不会被发现code2 理解Python双星和单星对参数的作用 Python中yield关键字的作用