Код: Выделить всё
import functools
def add_suffix(func):
@functools.wraps(func)
def wrapper(*args, suffix: str = '!', **kwargs):
return f'{func(*args, **kwargs)}{suffix}'
return wrapper
@add_suffix
def my_function():
return '1'
# E1123: Unexpected keyword argument 'suffix' in method call (unexpected-keyword-arg)
print(my_function(suffix='!!'))
Изменить для устранения проблем с автоматическим связыванием:
- Тип, указывающий на декоратор, который добавляет параметр со значением по умолчанию, относится к ParamSpec, но В документации по дженерикам Python указано размещение Параметры, содержащие только ключевые слова, между *args и **kwargs запрещены.
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-function