Funktion Anmerkungen sind nicht für eine bestimmte Verwendung, sie können für alles verwendet werden.
Werkzeuge können geschrieben werden, um Informationen aus den Annotationen zu extrahieren und alles zu tun, was Sie wollen, einschließlich Prüftypen oder Generierung von Dokumentation. Aber Python selbst macht nichts mit den Informationen. Sie könnten zu einem ganz anderen Zweck verwenden, d. H. Um eine Funktion bereitzustellen, die für den Parameter aufgerufen wird oder um eine Folge möglicher Rückgabewerte zu deklarieren.
Annotations kann jedes Objekt sein:
def somefunc(param1: "string annotation",
param2: 151631,
param3: any_object): -> "some information here":
und Sie können die Objekte abrufen mit:
print (somefunc.func_annotations)
{'param1': "string annotation",
'param2': 151631,
'param3': <object any_object>,
'return': "some information here"}
Use Case Vorschläge des PEP vorgesehen:
- eingeben Bereitstellung von Informationen
- Typ Überprüfung
- IDEs Lassen Sie zeigen, welche Arten eine Funktion erwartet und gibt
- Funktion Überlastung/generic Funktionen
- Fremdsprachiger Brücken
- Anpassung
- Prädikatslogikfunktionen
- Datenbankabfrage-Mapping
- RPC Parameter Marshalling
- Weitere Informationen
- Dokumentation für Parameter und Rückgabewerte
Da Funktion Anmerkung Syntax zu neu ist, ist es wirklich nicht für Produktionswerkzeuge verwendet.
Ich empfehle andere Methoden, um dies zu dokumentieren. Ich benutze epydoc meine Dokumentation zu erzeugen, und es kann Parameter Typisierung Informationen aus Docstrings lesen:
def x_intercept(m, b):
"""
Return the x intercept of the line M{y=m*x+b}. The X{x intercept}
of a line is the point at which it crosses the x axis (M{y=0}).
This function can be used in conjuction with L{z_transform} to
find an arbitrary function's zeros.
@type m: number
@param m: The slope of the line.
@type b: number
@param b: The y intercept of the line. The X{y intercept} of a
line is the point at which it crosses the y axis (M{x=0}).
@rtype: number
@return: the x intercept of the line M{y=m*x+b}.
"""
return -b/m
Dieses Beispiel stammt aus epydoc's website. Es kann Dokumentationen in verschiedenen Formaten generieren und aus Ihren Klassen und Anrufprofilen gute Grafiken erstellen.
Können Sie näher erläutern, bei welcher Version von Python diese Syntax hinzugefügt wurde? –
Eine Referenzimplementierung wurde in den p3yk-Zweig als Revision 53170 eingecheckt: http://svn.python.org/view?rev=53170&view=rev –
http://www.python.org/dev/peps/pep-3107/zielt auf Python Version 3.0. – Zitrax