Maison >développement back-end >Tutoriel Python >Décorateurs et exercices de base de Python

Décorateurs et exercices de base de Python

coldplay.xixi
coldplay.xixiavant
2020-12-22 17:45:002692parcourir

Tutoriel vidéo PythonExpliquer les décorateurs

Décorateurs et exercices de base de Python

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 inner
Le 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

Décorateurs et exercices de base de Python

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer