请问这样理解对吗?
>>> def fib():... back1, back2 = 0, 1
... def func():
... nonlocal back1, back2
... temp = back1
... back1, back2 = back2, back1 + back2
... return temp
... return func
...
>>> f = fib()
>>> f()
0
>>> f()
1
>>> f()
1
>>> f()
2
>>> f()
3
>>> f()
5
>>> f()
8
>>> f()
13
>>> f()
21
我对上面代码运行的理解,对吗?
1. f = fib()
这条语句运行时,执行了这条语句 back1, back2 = 0, 1,然后返回了一个函数func(),这时候把back1,back2两个变量放到了内存中。
2. f()
这条语句执行时,只执行func()函数内部的语句,不再执行back1, back2 = 0, 1,但是由于back1和back2两个变量已经在内存中,所以就直接使用并进行了修改。
说得对
nonlocal back1, back2说明不是内层函数的变量 理解正确
f 就是 func 函数了。nonlocal back1, back2 就意味着是从 fib 中找到的变量。 某一个“天” 发表于 2024-7-13 10:32
说得对
nonlocal back1, back2说明不是内层函数的变量
谢谢您的指点。 smallwh 发表于 2024-7-13 12:05
理解正确
f 就是 func 函数了。nonlocal back1, back2 就意味着是从 fib 中找到的变量。
非常感谢您的指点。 wbzxz 发表于 2024-7-13 22:26
非常感谢您的指点。
给个最佳呗~
页:
[1]