'NoneType' object is not callable

Résolu
Bonjour,
Je ne comprend pas le message d'erreur. J'appelle pourtant ma fonction hello normalement.
Merci par avance de vos retours
Voici ci dessous mon code et le message d'erreur :
def announce(f):
    def wrapper():
        print("About to run the function...")
        f()
        print("Done with the function.")
        return wrapper

@announce
def hello():
    print("hello, world !")

hello()


Voci le message d'erreur :
Traceback (most recent call last):
File "C:\Users\User\Desktop\temp.py", line 12, in <module>
hello()
TypeError: 'NoneType' object is not callable

3 réponses

  1. Contributeur Ambassadeur
    bonjour,
    as-tu essayé en supprimant la ligne 8?
    0
    1. Bonjour,
      Effectivement en supprimant la ligne 8, ça affiche "hello, world!", mais ce n'est pas mon but, (désolé je l'ai pas commenté).
      Je souhaite enfait que lorsque j'appelle ma fonction hello, on affiche "About to run the function..."
      puis la fonction s'exécute et finalement ça affiche "Done with the function.".
      0
      1. Contributeur Ambassadeur
        La fonction announce n'est pas correctement définie.
        Que devrait-elle retourner? Que retourne-t-elle?
        1
    2. Ah super, merci beaucoup, erreur d'indentation de ma part, il suffit juste de décaler le return a gauche et ça marche, voici le résultat :
      About to run the function...
      hello, world !
      Done with the function.
      Merci beaucoup
      0