Maison >développement back-end >Tutoriel Python >Décorateurs et exercices de base de Python
Tutoriel vidéo PythonExpliquer les décorateurs
Recommandé gratuitement : Tutoriel vidéo Python
Concept de décorateur
Le décorateur, pour parler franchement, est une fonction utilisée pour décorer des fonctions .
Le décorateur suit 开放封闭原则
et 依赖倒置原则
Ces deux principes et concepts peuvent être trouvés sur Baidu
À quoi ressemble le décorateur ?
def wrapper(f): def inner(*args,**kwargs): ret = f(*args,**kwargs) return ret return innerLe code ci-dessus est le format fixe du décorateur
Appeler le décorateur
@wrapper # 简称语法糖 def test(): print(1) test()
appelle le décorateur Par rapport à @wrapper
, il enregistre le code et est plus. beau. Peut-être que tu ne comprends pas quand tu vois ça, pourquoi veux-tu wrapper(test())
? Appeler une fonction n'est pas @wrapper
? wrapper()
En fait, si vous me demandez de vous le dire, je ne sais pas, je sais juste que c’est plus facile d’écrire ainsi. Placez simplement
devant la fonction que vous souhaitez décorer@wrapper
Utilisez un petit exemple pour comprendre rapidement le décorateur
def wrapper(f): print(2) def inner(*args,**kwargs): print(3) ret = f(*args,**kwargs) print(4) return ret return inner @wrapper def test(): print(1) test()
== @wrapper
qui est équivalent à appeler le décorateur Pour les fonctions, il serait plus simple d'utiliser la syntaxe sugar wrapper(test())
directement @wrapper
correspond aux paramètres passés par position, et *args
correspond aux paramètres passés par mot-clé, afin que tous les paramètres puissent être reçus. . **kwargs
reçoit la valeur et la transmet à wrapper(test)
Dans la fonction du cercle intérieur, f
est le code qui exécute la fonction décorée. Renvoyez ensuite la valeur exécutée, et enfin renvoyez cette fonction. Le résultat de l'exécution de ce code est : ret = f(*args,**kwargs)
2 3 1 4
Comme indiqué ci-dessous
On peut voir que Dans la fonction
, inner
est l'opération avant d'exécuter la fonction décorée, et print(3)
est l'opération après l'exécution de la fonction décorée. print(4)
Cela peut être difficile à comprendre. Il est donc préférable d'essayer.
Exercices de base
'''1. 默写装饰器固定格式 2. 写一个加减功能的装饰器 '''
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!