Maison >développement back-end >Tutoriel Python >Programmation Python : Re-compréhension des fonctions du décorateur
Les décorateurs sont des outils très utiles en Python. Un décorateur est une fonction qui prend une autre fonction comme paramètre et étend ses fonctionnalités sans la modifier explicitement. Il permet de modifier le comportement d'une fonction ou d'une classe sans toucher à son code source.
En d'autres termes, un décorateur enveloppe une fonction pour étendre son comportement plutôt que de la modifier de manière permanente.
À partir de cet article, étudions ce que sont les décorateurs et comment ils fonctionnent en Python.
Afin de comprendre le fonctionnement des décorateurs, nous devons revoir quelques concepts importants sur les fonctions en Python. Sachez toujours qu'en Python, les fonctions sont des citoyens de première classe, alors gardez les concepts suivants à l'esprit :
# 把函数赋值给常规变量:
# 定义简单函数
def sayHi(name:str):
return "Hi " + name + "."
#应用:函数赋值给变量
hi = sayHi
print(hi("Solo Cui"))
#输出结果
Hi Solo Cui.
Dans le code, nous définissons la fonction comme sayHi. Attribuez ensuite cette fonction à une variable locale nommée hi. Cette variable hi est également une fonction - dans ce cas, la variable affectée peut être considérée comme un alias pour la fonction. L'étape suivante consiste à appeler la variable hi en fonction : hi("Solo Cui").
La liste des codes est la suivante :
# 函数作为参数传递 def printHello(name): print("Hello,", name) # 把函数作为参数的函数 def hiWithFunction(func, xname): func(xname) #调用以函数为参数的函数 hiWithFunction(printHello,'上官婉儿')
Le code est facile à comprendre : deux fonctions sont définies, une fonction peut recevoir des paramètres fonctionnels, et l'autre fonction est passé en paramètre aux fonctions qui peuvent recevoir des paramètres fonctionnels
1.1.3 Exemple-3 : Fonctions qui renvoient des fonctionsLa liste de codes est la suivante :
#示例3:返回函数的函数 def returnXFunction(): return sayHi #示例1中定义的函数,可自行定义其它函数 # 调用函数 xHi = returnXFunction() print(xHi("BirdMan"))
Une fonction simple qui renvoie une autre fonction est définie ici, c'est-à-dire returnXFunction(), call Cette fonction attribue la valeur renvoyée à une variable xHi, puis la fonction de la fonction renvoyée peut être exécutée en fonction du nom de la variable xHi.
1.1.4 Exemple 4 : Fonction intégrée dans un corps de fonctionC'est-à-dire définir une fonction à l'intérieur d'un corps de fonction. Veuillez regarder le code :
# 示例4:函数体内不含税 def outerXFunction(msg): '''外部函数''' #代码... #定义内嵌函数 def innerXFunc(): '''内部函数''' print(msg,'来自内嵌函数.') #函数体内调用内嵌函数 innerXFunc() #调用外部函数 outerXFunction("火麒麟")
J'ai défini une fonction innerXFunc à l'intérieur de la fonction externalXFunction et j'ai appelé la fonction intégrée à l'intérieur du corps de la fonction externe, de sorte que lorsque la fonction externe est appelée, la fonction intégrée est exécutée.
Comme indiqué dans le code, lors de l'appel de la fonction externe, passez la chaîne "Fire Qilin" au paramètre msg. La sortie "Fire Qilin provient de la fonction intégrée". est complétée par la fonction auto-intégrée. Ce qu'il faut noter ici, c'est que la variable msg utilisée par innerXFunc n'est pas définie dans son propre corps de fonction. En d'autres termes, elle utilise la variable de sa portée parent - c'est le concept de fermeture en Python.
Un petit mot sur les fermetures Python : une fermeture est un objet fonction qui mémorise la valeur dans la portée de l'objet parent et peut être utilisée pour créer une association entre une fonction et un ensemble de variables "privées". Ces variables privées conservent leur persistance sur plusieurs appels à une fonction donnée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!