Remarque: décorateur Python

Juste une fonction

def hoge():
  print "aaaaaaabb"

hoge()
aaaaaaabb

Il n'y a rien d'étrange à cela.

Décorez la fonction

En fait, Python est @ (nom de la fonction) Vous pouvez créer une structure imbriquée en ajoutant la description avant la définition de la fonction. Donc si tu joues un peu avec


def deco(func):
  def aaa():
    print "wei soiya"
    func()
  return aaa

@deco
def hoge():
  print "aaaaaaabb"

hoge()
wei soiya
aaaaaaabb

Une phrase sera ajoutée avant

Dans l'exemple ci-dessus

@deco
def hoge

Par

hoge()

Mais

deco(hoge)()

Est équivalent à.

Avoir plusieurs décorateurs + arguments

Il semble que vous puissiez combiner plusieurs décorateurs ou passer des arguments aux décorateurs séparément en mordant le wrapper.

def deco1(name):
    def wrapper(func):
        def aaaa():
            print "your name is "+name
            print "deco1 called!"
            return func("aaa","www",yakiniku="teishoku")
        return aaaa
    return wrapper

def deco2(func):
    def bbbb(*args, **kwargs):
        print "wrap2 called!"
        return func(*args, **kwargs)
    return bbbb

@deco1('nanntara-kanntara-')
@deco2
def eee(*args, **kwargs):
    print args
    print kwargs
    return "done"

print eee()
your name is nanntara-kanntara-
deco1 called!
wrap2 called!
('aaa', 'www')
{'yakiniku': 'teishoku'}
done

Je me suis référé au site suivant.

http://hangar.runway7.net/python/decorators-and-wrappers

Recommended Posts

Remarque: décorateur Python
Remarque: Python
Note de Python
Note d'apprentissage Python_002
Note de programmation Python
[Python] Note d'apprentissage 1
Note d'apprentissage Python_004
Note d'apprentissage Python_003
[Remarque] openCV + python
Décorateur de fonction Python
Note du débutant Python
[Note] future déclaration ~ Python ~
[Note] Lecture de fichier ~ Python ~
notes d'utilisation du décorateur python
Remarque pour faire de python un démon
Remarque: python Skeleton Nya
Note d'introduction Python Tkinter
Mémo d'opération de décorateur Python
J'ai essayé Python> décorateur
Note
Décorateur 1
Python
Note d'entrée Python dans AtCoder
[Note] Faites fonctionner MongoDB avec Python
Note
Note
Décorateur 2
[WIP] Notes d'étude Fluent Python
Exemple de fonctions d'ordre supérieur (décorateurs) en Python
Notes depuis 3 mois depuis que j'ai commencé Python
[AtCoder] Note personnelle ABC165C [Python]
Notez qu'il prend en charge Python 3
Décorateur
Une note sur [python] __debug__
Décorateur
Remarque Python: à propos de la comparaison en utilisant is
[Note] Projet Euler en Python (problème 1-22)
[Présentation de l'application Udemy Python3 +] 57. Décorateur
Python: une note sur les classes 1 "Résumé"
[Python] Qu'est-ce que @? (À propos des décorateurs)
(Note) Soyez prudent avec python argparse
[Note] Sortie Hello world avec python
Remarque sur boto3 (AWS SDK for Python)
Clé étrangère dans SQLite de Python [Note]
Créer un framework de décorateur à usage général pour Python
Remarque Python: obtenez le mois en cours
Une note sur mock (bibliothèque fictive Python)
python kafka
Django Note 4
Les bases de Python ⑤
Une note où un débutant Python s'est retrouvé coincé
Créer un décorateur de fonction Python avec Class
Résumé Python
Python intégré
python Remarque: lorsque easy_install ne peut pas être utilisé
Notation d'inclusion Python
Technique Python