Je souhaite écrire un décorateur dans python
: si une fonction appelée contient print
, le décorateur imprime son nom avant que cette fonction ne soit appelée. Je suis familier avec la syntaxe des décorateurs, mais j'ai un problème avec la vérification si une fonction a print
en elle-même.Vérifier qu'une fonction utilise la fonction d'impression en python
def preceeding_name(func):
@wraps(func)
def wrapper(*args, **kwargs):
if 'print' in func:
print(func.__name__)
result = func(*args, **kwargs)
return result
return wrapper
Il ne faut pas vérifier si la s » de la fonction print
sera effectivement appelé.
trouver si une fonction appelle une autre fonction est [dur] (https://stackoverflow.com/questions/12013399/in-python-determine-if-a -fonction-appelle-une-autre-fonction). Puis-je vous suggérer d'utiliser plutôt le module ['logging'] (https://docs.python.org/3/library/logging.html)? Vous pouvez alors facilement utiliser quelque chose comme '% (funcName) s' lors de la création d'un formateur. – Josh
@Josh, merci, je vais regarder ce fonctionnel – Macaronnos
Cela peut être fait en redéfinissant sys.stdout –