python函数作用域遵循LEGB原则,L>E>G>B
L: local函数内部作用域
E:enclosing函数内部与内嵌函数之间
G:global全局作用域
B:build-in内置作用域
下面用一个例子进行解释:
pass_line = 60 # pass_line: global
def func(val): # val: local
pass_line = 90 # pass_line: local
if val >= pass_line:
print("pass")
else:
print("failed")
def fun_in():
print(val) # val: enclosing
return fun_in
def maximum(val1, val2):
return max(val1, val2) # max(): build-in
if __name__ == "__main__":
f = func(89)
f()