python函数作用域:LEGB
L:local:函数内部作用域
E:enclosing:函数内部与内嵌函数之间作用域-------间接发生延长变量寿命的作用,但是变量不可以在内函数中被更改。
G:global:全局变量
B:buind-in:内置作用域
函数调用变量时会一级一级的查找
注:
num = 10
def func():
print(num)
func()#--------------------------10
----------------------------------------------------------------------------------
def func2():
num = 20
print(num)#--------------------20
在函数内部创建num变量,则函数默认函数内使用的所有num都为内部变量,并且在内部寻找
b = "ccc"
def func():
b = "aaa"
print(b)
print()
def func2():
print(b)
b = "aaa"
func()#------------aaa
func2()#---------------------UnboundLocalError: local variable 'b' referenced before assignment
#当在函数内给b赋值之后(即在函数内部创建了b变量),函数认为b为局部变量,因此在此之前的读取b时,就会发生“变量未定义“的错误