from functools import wraps
def logged(func):
@wraps(func)
def with_logging(*args, **kwargs):
print func.__name__ + " was called"
return func(*args, **kwargs)
return with_logging
@logged
def f(x):
"""does some math"""
return x + x * x
print f.__name__ # prints 'f'
print f.__doc__ # prints 'does some math'
Учитывая этот пример кода, как бы я мог сделать @logged(variable)
?Python decorator необязательный аргумент
Я попробовал этот
from functools import wraps
def logged(func):
def outer(var):
@wraps(func)
def with_logging(*args, **kwargs):
print func.__name__ + " was called"
return func(*args, **kwargs)
return with_logging
return outer
Я надеялся выполнить так: вход (FUNC) (session_variable)
Но не работает. Любая идея? Я хочу иметь возможность делать @logged и @logged (var) (или даже @logged (var1, var2)) Спасибо.
спасибо. Я многому научился. – user423455
Отлично, спасибо. Это помогло мне реализовать декоратор 'required_params()'. – Jason