递归函数_函数调用内存分析_栈帧的创建
def f1(n):
print("f1:第",n,"次") #打印出来f1:第 6 次
if n==0: #切记双等于号
print("over")
else:
f1(n-1) #得到f1(5),马上进行下一步运算,来不及打印下面的****
print("f1*******",n)
f1(6)
阶乘的递归
def f1(n):
if n==1: #切记双等于号
return 2 #如果是1,最后得到720.如果是2,最后得到1440,如果是0,最后得到0.
else:
return n*f1(n-1)
result=f1(6) #这里定义了result
print(result)
嵌套函数与nonlocal
def outer():
b = 10
print(b)
def inner():
print("inner b",b) #此时输出的是10
inner()
outer()
def outer():
b = 10
print(b)
def inner():
b=20
print("inner b",b) #这个时候输出是20
inner()
outer()
def outer():
b = 10
print(b)
def inner():
b=20
print("inner b",b) #这个时候输出是20
inner()
print(b) #这个时候输出是10
outer()
做好和下面这个的区分
def outer():
b = 10
print(b)
def inner():
nonlocal b #切记书写形式
b = 20
print("inner b",b) #这个时候输出是20
inner()
print(b) #这个时候输出是20
outer()
LEGB
def outer():
str="123"
def inner():
#str="345"
print(str) #输出了345,先从局部空间找,找到以后就不输出了
inner()
outer()