Ich habe ein paar Antworten gesehen, die Dekoratoren verwendet haben, obwohl ich das Gefühl hatte, dass ein paar davon ein bisschen langatmig waren. Hier ist etwas, das ich für die Protokollierung von Funktionsnamen sowie ihrer jeweiligen Eingabe- und Ausgabewerte verwende. Ich habe es hier angepasst, um nur die Informationen zu drucken, anstatt eine Protokolldatei zu erstellen, und es an das spezifische Beispiel der OP angepasst.
def debug(func=None):
def wrapper(*args, **kwargs):
try:
function_name = func.__func__.__qualname__
except:
function_name = func.__qualname__
return func(*args, **kwargs, function_name=function_name)
return wrapper
@debug
def my_function(**kwargs):
print(kwargs)
my_function()
Ausgabe:
{'function_name': 'my_function'}