[英]Is it possible to pass argument to a decorated function?
I have written the below decorator: 我写了下面的装饰器:
import time
def runtime(some_function):
def wrapper():
start = time.time()
some_function()
runtime = time.time() - start
print(runtime)
return wrapper
@runtime
def printing(upper_limit):
for number in range(upper_limit):
print(number)
printing(10)
printing(100)
printing(1000)
printing(10000)
Why do I get: 为什么会得到:
TypeError: wrapper() takes 0 positional arguments but 1 was given TypeError:wrapper()接受0个位置参数,但给出了1个
when running the code and how to fix it? 运行代码时如何解决?
You need to make wrapper
accept arguments and pass them to some_function
. 您需要使wrapper
接受参数并将其传递给some_function
。 It should also return what some_function
returns to be more generic. 它还应返回some_function
返回的内容,以使其更通用。
def runtime(some_function):
def wrapper(*args, **kwargs):
start = time.time()
result = some_function(*args, **kwargs)
runtime = time.time() - start
print(runtime)
return result
return wrapper
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.