第90课时: LEGB 规则.
LEGB原则:
Python在查找“名称时”是按照LEGB原则查找的;
即: local—àenclosed----》global——built in,
Local 是函数内部
Enclosed 是镶嵌函数内部
Global 模块中的全局变量
Built in python 自己保留的特殊名称。
(由函数内向函数外依次向函数外部查找的顺序)
测试:LEGB原则
def outer():
str="outer"
def inner():
str = 'global'
print(str)
inner()
outer()
global
可以看到,首先查找当地函数内部的变量
def outer():
str="outer"
def inner():
#str = 'global'
print(str)
inner()
outer()
outer
将内部函数的str变为注释,这时候打印的就是外部函数的 str (outer)
str="waibu"
def outer():
#str="outer"
def inner():
#str = 'global'
print(str)
inner()
outer()
waibu
可以看到,把 outer()内的str也换成注释之后,打印出的是最外层的全局变量str
str="waibu"
def outer():
#str="outer"
def inner():
str = 'global'
inner()
print(str)
outer()
waibu
没有向内查找,而是向外查找。