LEGB规则
Python在查找规则时,是按照LEGB规则查找的:Local -- Enclosed -- Glabal -- Built in
- Local:指的就是函数或类方法内部
- Enclosed:指的就是嵌套函数
- Global:指的就是模块中的全局变量
- Built in:指的就是Python为自己保留的特殊名称
如果某个name在映射空间(local)内没有找到,一直按顺序LEGB查找,如果都没找到,就会产生NameError
1 str = 'global str' 2 def outer(): 3 str = 'outer str' 4 def inner(): 5 str = 'inner str' 6 print(str) 7 8 inner() 9 outer()
依次将str注释掉,就会寻找到查找顺序