Может кто-нибудь сообщить мне, какую ошибку я совершаю.
Декоратор
import time
def f1(f):
a = time.time()
f()
b = time.time()
c = b-a
print("time required is", c)
@f1
def f3(f2):
n = []
for i in range(1000):
n.append(i)
print(sum(n), "for F3")
f2()
@f3
def f4():
n = []
for i in range(1000):
n.append(i)
print(sum(n), "for F4")
f4
o / p:
Traceback (последний последний вызов):
File "C:/test.py", line 13, in <module>
@f1
File "C:/test.py", line 7, in f1
f()
TypeError: f3() missing 1 required positional argument: 'f2'
Process finished with exit code 1
в поисках чего-то подобного:
def decorator_with_args (decorator_to_enhance):
def decorator_maker(*args, **kwargs):
def decorator_wrapper(func):
return decorator_to_enhance(func, *args, **kwargs)
return decorator_wrapper
return decorator_maker
@ decorator_with_args
def decor_decorator (func, *args, ** kwargs):
def wrapper(function_arg1, function_arg2):
print("Decorated with {0} {1}".format(args, kwargs))
return func(function_arg1, function_arg2)
return wrapper
@ decor_decorator (42, 404, 1024)
def decor_function (function_arg1, function_arg2):
print("Hello {0} {1}".format(function_arg1, function_arg2))
decor_function («Вселенная и», «все»)