Ich kenne @staticmethod, @classmethod und @property, aber nur durch verstreute Dokumentation. Gibt es eine vollständige Liste von Funktionsdekoratoren, die in Python integriert sind?Python - Gibt es irgendwo eine Liste von Dekorateuren?
Antwort
Ich glaube nicht. Dekorateure unterscheiden sich nicht von gewöhnlichen Funktionen, Sie nennen sie nur raffinierter.
Für sie alle zu finden, versuchen Built-in functions Liste suchen, weil, wie Sie in Python glossary der Dekorateur Syntax nur syntaktischer Zucker ist zu sehen, wie die beiden folgenden Definitionen gleich Funktionen erstellen (in diesem Beispiel aus Glossar kopiert):
def f(...):
...
f = staticmethod(f)
@staticmethod
def f(...):
So kann jede eingebaute Funktion, die eine andere Funktion zurückgibt, als Dekorateur verwendet werden. Die Frage ist - macht es Sinn, es so zu benutzen? :-)
functools Modul enthält einige Funktionen, die als Dekoratoren verwendet werden können, aber sie sind keine integrierten Bausteinen, nach denen Sie gefragt haben.
Sie sind nicht eingebaut, aber this library von Beispiel Dekoratoren wenn sehr gut.
Als Abgan says ist die eingebaute Funktionsliste wahrscheinlich der beste Ort, um zu sehen, obwohl als Dekoratoren auch als Klassen implementiert werden können, ist es nicht garantiert, umfassend zu sein.
Es gibt keine Liste aller Dekoratoren. Es gibt keine Liste aller Funktionen. Es gibt keine Liste aller Klassen.
Dekoratoren sind ein praktisches Werkzeug zum Definieren eines gemeinsamen Aspekts über Funktionen, Methoden oder Klassen hinweg. Es gibt die eingebauten Dekorateure. Außerdem gibt es jede Menge coole und nutzlose Dekorateure. Genauso gibt es eine Anzahl cooler und nutzloser Klassen.
Dekoratoren müssen nicht einmal eine Funktion zurückgeben. Ich habe @atexit.register
vorher benutzt.
Gut, dass man die gleiche Funktion zurückgibt, die für genau diesen Zweck übergeben wurde. –
Oh, oder? Ich habe es nie bemerkt. – habnabit
"Dekorierer müssen nicht einmal eine Funktion zurückgeben" - um es sinnvoll zu machen, sollten sie aber, da '@ decor' nur Zucker für' f = decor (f) 'ist - sonst verlieren Sie die Referenz zu der Funktion, die du dekorierst. –
- 1. Gibt es eine Liste von Python 3-Bibliotheken von Drittanbietern?
- 2. Python: Verwendung von Dekorateuren v/s Mixins?
- 3. Gibt es eine Liste von STL-Container-Methoden, die irgendwo eine Ausnahme auslösen können?
- 4. Gibt es irgendwo eine Dokumentation für den OnGuard von Turbopower?
- 5. Gibt es irgendwo eine gute HTML Meta Tags Übersicht?
- 6. Liste von 'if' wechselt irgendwo?
- 7. Gibt es irgendwo in den Standardbibliotheken eine Liste von ANSI-Farb-Escape-Codes?
- 8. Netsuite Leiden: Gibt es irgendwo anständige Referenz?
- 9. Gibt es irgendwo einen interaktiven Dartcode?
- 10. Gibt es eine erschöpfende Liste von Standardattributen?
- 11. Sind die eingebauten Bilder im iPhone dokumentiert, und gibt es irgendwo eine Liste ihrer Namen?
- 12. Gibt es eine Liste bekannter Web-Crawler?
- 13. Gibt es irgendwo alte Versionen von Windows UX?
- 14. Gibt es eine Python-Sprachspezifikation?
- 15. gibt es eine komplette Liste von rspec api
- 16. Gibt es eine Liste von Linienstilen in Matplotlib?
- 17. Umgang mit interagierenden Dekorateuren
- 18. Gibt es eine Liste der Datalab-Tastaturkürzel?
- 19. Nullable und typisierte Datenmenge, gibt es irgendwo einen Generator?
- 20. eine Liste Python Liste von Objekten bestellen
- 21. Gibt es eine integrierte Python-Methode, die über eine Liste mit Indexwerten anstelle von Elementen iteriert
- 22. Gibt es ein Klickverhalten für eine Liste?
- 23. Gibt es eine Liste für EventTrigger EventNames?
- 24. Gibt es irgendwo kann ich Unterstützung mit JMeter bekommen?
- 25. Gibt es irgendwo Open-Source-Projekte, die nach Mitwirkenden suchen?
- 26. Gibt es irgendwo eine Java-Bibliothek, die genau die Formatzeichenfolgen von Excel unterstützt?
- 27. Gibt es irgendwo einen guten Überblick über zend framework 2?
- 28. Gibt es irgendwo zwischen Lua und JavaScript-Konvertern oder Interpretern?
- 29. Gibt es eine SessionInfo() Entsprechung in Python?
- 30. Gibt es in Python eine "Wildcard-Methode"?
Es gibt keine offizielle Liste, aber dieser Link ist nützlich: https://github.com/lord63/awesome-python-decorator – Casebash