|

楼主 |
发表于 2022-10-11 11:09:23
|
显示全部楼层
emmm 似懂非懂 装饰器不是很明白
那为什么@delay放在fib()上面就会报错呢
- import time
-
- def delay(func):
- def call_func():
- time.sleep(1)
- func()
- return call_func
- @delay # 我理解放这边就是fib = delay(fib) 为什么不行
- def fib():
- back1, back2 = 0, 1
- def func():
- nonlocal back1, back2
- back1, back2 = back2, back1 + back2
- print(back1, end=' ')
- return func
-
- def get_fib(n):
- f = fib()
- for i in range(n):
- f()
-
- n = int(input("请输入需要获取的斐波那契数:"))
- get_fib(n)
复制代码
- 请输入需要获取的斐波那契数:8
- Traceback (most recent call last):
- File "C:\Users\JiJing\Desktop\test.py", line 24, in <module>
- get_fib(n)
- File "C:\Users\JiJing\Desktop\test.py", line 21, in get_fib
- f()
- TypeError: 'NoneType' object is not callable
复制代码 |
|