>>> def debug(func):
...     def wrapper(*args, **kwargs):
...         function = func.__name__
...         result = func(*args, **kwargs)
...         print(f'Calling: {function=}, {args=}, {kwargs=}, {result=}')
...         return result
...     return wrapper
>>>
>>>
>>> @debug
... def add(a, b):
...     return a + b
>>>
>>>
>>> add(1,2)
Calling: function='add', args=(1, 2), kwargs={}, result=3
3