[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator

** * Dieser Artikel ist von Udemy "[Einführung in Python3, unterrichtet von aktiven Silicon Valley-Ingenieuren + Anwendung + Code-Stil im amerikanischen Silicon Valley-Stil](https://www.udemy.com/course/python-beginner/" Einführung in Python3, unterrichtet von aktiven Silicon Valley-Ingenieuren + Anwendung + Code-Stil im amerikanischen Silicon Valley-Stil ")" Es ist eine Klassennotiz für mich nach dem Kurs von. Es ist mit Genehmigung des Ausbilders Jun Sakai für die Öffentlichkeit zugänglich. ** **.

■ Grundlagen der Dekorateure

◆ Wenn Sie ohne Dekorateur schreiben

non_decorator


def add_num(a, b):
    return a + b

print('start')
r = add_num(10, 20)
print('end')

print(r)

result


start
end
30

Zusätzlich zum Aufruf von "add_num ()" können Sie den "Dekorator" verwenden, wenn Sie vorher oder nachher etwas Zusätzliches tun möchten.

◆ Wenn Sie mit einem Dekorateur schreiben

decorator


def print_info(func):
    def wrapper(*args, **kwargs):
        print('start')
        result = func(*args, **kwargs)
        print('end')
        return result
    return wrapper

def add_num(a, b):
    return a + b

f = print_info(add_num)
r = f(10, 20)
print(r)

result


start
end
30

Für * args siehe 52. Tupple Position Arguments Informationen zu "** kwargs" finden Sie unter 53. Wörterbuch der Schlüsselwortargumente.

◆ Allgemeine Verwendung von Dekorateuren

Wenn Sie es wie oben schreiben, ist es schwer zu verstehen, dass es als Dekorateur verwendet wird. Beschreiben Sie daher im Allgemeinen bei Verwendung eines Dekorateurs Folgendes.

decorator


def print_info(func):
    def wrapper(*args, **kwargs):
        print('start')
        result = func(*args, **kwargs)
        print('end')
        return result
    return wrapper

@print_info
def add_num(a, b):
    return a + b

r = add_num(10, 20)
print(r)

result


start
end
30

Durch Angabe einer Dekorationsfunktion mit @ können Sie mit dieser Funktion dekorieren.

■ Bei Verwendung mehrerer Dekorateure

◆ Auftrag zur Anwendung von Dekorateuren

Schreiben Sie eine andere Dekorationsfunktion und versuchen Sie, beide zu verwenden.

two_decorators


def print_more(func):
    def wrapper(*args, **kwargs):
        print('func: ', func.__name__)
        print('args: ', args)
        print('kwargs: ', kwargs)
        result = func(*args, **kwargs)
        print('result: ', result)
        return result
    return wrapper

def print_info(func):
    def wrapper(*args, **kwargs):
        print('start')
        result = func(*args, **kwargs)
        print('end')
        return result
    return wrapper

@print_info
@print_more
def add_num(a, b):
    return a + b

r = add_num(10, 20)
print(r)

result


start
func: add_num
args: (10, 20)
kwargs: {}
result: 30
end
30

Wenn Sie einen Dekorateur wie diesen angeben, Sie können sehen, dass print_more in print_info enthalten ist.

Versuchen Sie nun, die Reihenfolge der beiden Dekorateure zu vertauschen.

two_decorators


def print_more(func):
    def wrapper(*args, **kwargs):
        print('func: ', func.__name__)
        print('args: ', args)
        print('kwargs: ', kwargs)
        result = func(*args, **kwargs)
        print('result: ', result)
        return result
    return wrapper

def print_info(func):
    def wrapper(*args, **kwargs):
        print('start')
        result = func(*args, **kwargs)
        print('end')
        return result
    return wrapper

@print_more
@print_info
def add_num(a, b):
    return a + b

r = add_num(10, 20)
print(r)

result


func: add_num
args: (10, 20)
kwargs: {}
start
end
result: 30
30

Dieses Mal ist print_info in print_more enthalten.

Recommended Posts

[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator
[Einführung in die Udemy Python3 + -Anwendung] 58. Lambda
[Einführung in die Udemy Python3 + -Anwendung] 31. Kommentar
[Einführung in die Udemy Python3 + -Anwendung] 56. Abschluss
[Einführung in die Udemy Python3 + -Anwendung] 59. Generator
[Einführung in die Udemy Python3 + -Anwendung] Zusammenfassung
[Einführung in die Udemy Python3 + -Anwendung] 18. Listenmethode
[Einführung in die Udemy Python3 + -Anwendung] 63. Notation zur Einbeziehung des Generators
[Einführung in die Udemy Python3 + -Anwendung] 28. Kollektiver Typ
[Einführung in die Udemy Python3 + -Anwendung] 33. if-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 13. Zeichenmethode
[Einführung in die Udemy Python3 + -Anwendung] 55. In-Function-Funktionen
[Einführung in die Udemy Python3 + -Anwendung] 48. Funktionsdefinition
[Einführung in die Udemy Python3 + -Anwendung] 10. Numerischer Wert
[Einführung in die Udemy Python3 + -Anwendung] 21. Taple-Typ
[Einführung in die Udemy Python3 + -Anwendung] 45. Aufzählungsfunktion
[Einführung in die Udemy Python3 + -Anwendung] 41. Eingabefunktion
[Einführung in die Udemy Python3 + -Anwendung] 17. Listenoperation
[Einführung in die Udemy Python3 + -Anwendung] 65. Ausnahmebehandlung
[Einführung in die Udemy Python3 + -Anwendung] 11. Zeichenkette
[Einführung in die Udemy Python3 + -Anwendung] 44. Bereichsfunktion
[Einführung in die Udemy Python3 + -Anwendung] 46. Zip-Funktion
[Einführung in die Udemy Python3 + -Anwendung] 24. Wörterbuchtyp
[Einführung in die Udemy Python3 + -Anwendung] 8. Variablendeklaration
[Einführung in die Udemy Python3 + -Anwendung] 29. Methode festlegen
[Einführung in die Udemy Python3 + -Anwendung] 16. Listentyp
[Einführung in die Udemy Python3 + -Anwendung] 61. Wörterbucheinschlussnotation
[Einführung in die Udemy Python3 + -Anwendung] 22. Auspacken der Taples
[Einführung in die Udemy Python3 + -Anwendung] 26. Kopie des Wörterbuchs
[Einführung in die Udemy Python3 + -Anwendung] 23. Verwendung von Tapuru
[Einführung in die Udemy Python3 + -Anwendung] 60. Listeneinschlussnotation
[Einführung in die Udemy Python3 + -Anwendung] 19. Kopie der Liste
[Einführung in die Udemy Python3 + -Anwendung] 38. Bei der Beurteilung von None
[Einführung in die Udemy Python3 + -Anwendung] 40. while else-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 62. Legen Sie die Einschlussnotation fest
[Einführung in die Udemy Python3 + -Anwendung] 64. Namespace und Gültigkeitsbereich
[Einführung in die Udemy Python3 + -Anwendung] 43. for else-Anweisung
[Einführung in Udemy Python3 + Application] 67. Befehlszeilenargumente
[Einführung in die Udemy Python3 + -Anwendung] 9. Drucken Sie zunächst mit print
[Einführung in die Udemy Python3 + -Anwendung] 54. Was ist Docstrings?
[Einführung in die Udemy Python3 + -Anwendung] 14. Zeichensubstitution 15.f-Strings
[Einführung in die Udemy Python3 + -Anwendung] 35. Vergleichsoperatoren und logische Operatoren
[Einführung in Udemy Python3 + Application] 53. Wörterbuch der Schlüsselwortargumente
[Einführung in die Udemy Python3 + -Anwendung] 27. Verwendung des Wörterbuchs
[Einführung in die Udemy Python3 + -Anwendung] 30. Verwendung des Sets
[Einführung in die Udemy Python3 + -Anwendung] 68. Importanweisung und AS
[Einführung in Udemy Python3 + Application] 52. Tapple von Positionsargumenten
[Einführung in die Udemy Python3 + -Anwendung] 42. für Anweisung, break-Anweisung und continue-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 39. while-Anweisung, continue-Anweisung und break-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
[Einführung in die Udemy Python3 + -Anwendung] 32.1 Wenn eine Zeile lang wird
[Einführung in Udemy Python3 + Application] 50. Positionsargumente, Schlüsselwortargumente und Standardargumente
[Einführung in Udemy Python3 + Application] 51. Seien Sie vorsichtig mit Standardargumenten
Einführung in die Python-Sprache
Einführung in OpenCV (Python) - (2)
[Einführung in die Udemy Python3 + -Anwendung] 49. Funktionszitat und Rückgabewertdeklaration
[Einführung in die Udemy Python3 + -Anwendung] 69. Import des absoluten Pfads und des relativen Pfads
[Einführung in die Udemy Python3 + -Anwendung] 12. Indizieren und Schneiden von Zeichenketten
[Einführung in die Udemy Python3 + -Anwendung] 47. Verarbeiten Sie das Wörterbuch mit einer for-Anweisung
Einführung in Python Django (2) Win