| 
 | 
 
 
 楼主 |
发表于 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
 
 
  复制代码 |   
 
 
 
 |