哪位大神能解释一下这个流程怎么走的?用pythontutor看步骤看了两天都没看
def tracer(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print('%s(%r,%r)->%r'%(func.__name__,args,kwargs,result))
return result
return wrapper
@tracer
def fibonacci(n):
if n in (0,1):
return n
return (fibonacci(n-1)+fibonacci(n-2))
fibonacci(3) |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
fibonacci 函数使用了闭包, @tracer是一个装饰器
调用 fibonacci(3)相当于下面常规代码
tracer(fibonacci)(3)实质是,当你使用带有包装器(@tracer)的fibonacci函数时,是将fibonacci函数带参数值传入了tracer并调用 了该函数。记住!!!tracer是接收函数并返回函数的高阶函数 |
|
|
|
|