Hinweis: Python-Dekorator

Nur eine Funktion

def hoge():
  print "aaaaaaabb"

hoge()
aaaaaaabb

Daran ist nichts Seltsames.

Dekorieren Sie die Funktion

Eigentlich ist Python @ (Funktionsname) Sie können eine verschachtelte Struktur erstellen, indem Sie die Beschreibung vor der Funktionsdefinition hinzufügen. Also, wenn du ein bisschen damit spielst


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

@deco
def hoge():
  print "aaaaaaabb"

hoge()
wei soiya
aaaaaaabb

Ein Satz wird vorher hinzugefügt

Im obigen Beispiel

@deco
def hoge

Durch

hoge()

Aber

deco(hoge)()

Ist äquivalent zu.

Habe mehrere Dekorateure + Argumente

Es scheint, dass Sie mehrere Dekorateure kombinieren oder Argumente separat an die Dekorateure übergeben können, indem Sie in den Wrapper beißen.

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

Ich habe auf die folgende Seite verwiesen.

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

Recommended Posts

Hinweis: Python-Dekorator
Hinweis: Python
Python-Notiz
Python lernen note_002
Python-Programmierhinweis
[Python] Lernnotiz 1
Python lernen note_004
Python lernen note_003
[Hinweis] openCV + Python
Python-Funktionsdekorateur
Python-Anfängernotiz
[Anmerkung] zukünftige Aussage ~ Python ~
[Hinweis] Datei lesen ~ Python ~
Verwendungshinweise für Python Decorator
Beachten Sie, dass Python ein Daemon ist
Hinweis: Python Skeleton Nya
Python Tkinter Primer Hinweis
Python-Dekorator-Operationsnotiz
Ich habe Python> Decorator ausprobiert
Memo
Dekorateur 1
Python
Python-Eingabehinweis in AtCoder
[Hinweis] Betreiben Sie MongoDB mit Python
Memo
Memo
Dekorateur 2
[WIP] Fluent Python-Studiennotizen
Beispiel für Funktionen höherer Ordnung (Dekoratoren) in Python
Notizen für 3 Monate, seit ich Python gestartet habe
[AtCoder] ABC165C Persönliche Notiz [Python]
Beachten Sie, dass es Python 3 unterstützt
Dekorateur
Ein Hinweis zu [Python] __debug__
Dekorateur
Python Hinweis: Über den Vergleich mit is
[Hinweis] Project Euler in Python (Problem 1-22)
[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator
Python: Ein Hinweis zu Klasse 1 "Abstract"
[Python] Was ist @? (Über Dekorateure)
(Hinweis) Seien Sie vorsichtig mit Python Argparse
[Hinweis] Hallo Weltausgabe mit Python
boto3 (AWS SDK für Python) Hinweis
Fremdschlüssel in SQLite von Python [Hinweis]
Erstellen Sie ein universelles Dekorationsframework für Python
Python Hinweis: Holen Sie sich den aktuellen Monat
Ein Hinweis zu Mock (Python-Mock-Bibliothek)
Kafka Python
Django Note 4
Python-Grundlagen ⑤
Eine Notiz, in der ein Python-Anfänger stecken blieb
Erstellen Sie mit Class einen Python-Funktionsdekorator
Python-Zusammenfassung
Eingebaute Python
Python Hinweis: Wenn easy_install nicht verwendet werden kann
Python-Einschlussnotation
Python-Technik