零基础入门学习python第45讲_闭包作业_斐波那契数列
请问为什么这个斐波那契数列不是从1开始打印啊temp = back1; 但是back1在下一行代码不是已经变成back2了嘛,请问为什么不是从1开始打印呢
def fib():
back1, back2 = 0, 1
def func():
nonlocal back1, back2
temp = back1
back1, back2 = back2, back1 + back2
return temp
return func
f = fib()
比如下面这个闭包的例子,a()就是从6开始打印{:5_104:}
def funX():
x = 5
def funY():
nonlocal x
x += 1
return x
return funY
a = funX()
a()
back1 变成 back2?准确的说是 back1 获得 back2 的值
temp 获得的值是在 back1 没有得到 back2 的值之前的,所以 temp 的值跟 back1 得到 back2 的值有什么关系呢? def fib(n):
back1, back2 = 0, 1
def func():
nonlocal back1, back2,n
if 0==n:
return back1
temp = back1
back1, back2 = back2, temp + back2
n-=1
return func()
return func
fib(8)()
21
页:
[1]