Bonjour,
dans certains codes sur github je vois un @ avant la déclaration de certains fonctions. A quoi cela sert il svp?
Forum Programmation.python a quoi sert @?
25
nov.
2021
Bonjour,
dans certains codes sur github je vois un @ avant la déclaration de certains fonctions. A quoi cela sert il svp?
# LMSTFY
Posté par Anonyme . Évalué à 4. Dernière modification le 25/11/21 à 15:18.
https://stackoverflow.com/questions/6392739/what-does-the-at-symbol-do-in-python
# décorateur
Posté par goeb . Évalué à 2. Dernière modification le 25/11/21 à 21:12.
Il s'agit d'un décorateur. C'est un remplacement d'une fonction par une autre.
L'exemple qui illustre :
Par contre cet exemple apporte de la confusion et ne révèle pas l'utilité des décorateurs, ce qui est une autre question…
[^] # Re: décorateur
Posté par gUI (Mastodon) . Évalué à 3. Dernière modification le 26/11/21 à 08:05.
Je confirme que l'exemple n'est pas très bon car au final il n'utilise pas la fonction décorée.
Pour moi le décorateur est un "tag" que tu mets à une fonction. L'exemple de Flask est plus parlant :
Flask définit le décorateur "route". Ainsi, quand tu crées une fonction et que tu la décores par une URL, cette fonction sera appelée par le moteur Flask lorsqu'un visiteur va sur cette URL.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: décorateur
Posté par Étienne BERSAC (site Web personnel) . Évalué à 5. Dernière modification le 26/11/21 à 09:37.
Plus formellement, un décorateur est une fonction recevant une fonction et retournant une fonction. Ça peut être la même.
On peut aussi décorer une classe.
[^] # Re: décorateur
Posté par jihele . Évalué à 2.
N'importe quel objet, pas forcément une fonction.
C'est aussi souvent une classe, par exemple.
[^] # Re: décorateur
Posté par Panhwein . Évalué à 2. Dernière modification le 27/11/21 à 09:16.
Oui, on peut même en mettre plusieurs!
@noel
@clignote
@sapin
etc…
[^] # Re: décorateur
Posté par Étienne BERSAC (site Web personnel) . Évalué à 2.
J'ai précisé qu'on peut décorer une classe. À quel autre objet pense-tu ?
[^] # Re: décorateur
Posté par jihele . Évalué à 2.
Anéfé, j'avais pas vu la précision en bas et tiqué sur la formulation en haut.
J'ai pas d'autre exemple courant. On doit pouvoir décorer une variable dans un module, un attribut dans une classe,… mais c'est pas quelque chose que je fais couramment.
[^] # Re: décorateur
Posté par Elfir3 . Évalué à 3.
Si ça peut aider à la compréhension, j'ajouterais que ces deux codes sont équivalents :
et
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.