0
我想在python 3中编写一个装饰器,它基本上保留了一个函数被调用的次数。 这里是我的代码:python调用序列中的装饰器
def call_counter(func):
def helper(x):
helper.calls += 1
return func(x)
helper.calls = 0
return helper
@call_counter
def succ(x):
return x + 1
for i in range(10):
print(succ(i)) # <--- ??
我知道如何装饰作品,但只有我这里有困惑的是,第一次打电话SUCC(X)得到一个函数的回报@call_counter装饰。 但是,这里的主要困惑是我不太明白for循环内部的顺序调用是如何发生的?
那么从第一次调用返回函数(在这种情况下是否为辅助函数)后,流如何去呢?
现在在for循环中,succ(0),succ(1)等被调用,这是如何工作的?我们是否重用与第一次调用相同的返回函数,或者每次将for循环添加1时都会调用装饰器?
值得一提的是,如果你想让你的装饰透明,你可以使用'functools.wraps'。 – khachik
感谢吉姆,但我想你的意思是把印刷(succ)放在succ()里面而不是在for循环里面?但我明白你的观点。 – skyrocker