Kürzlich habe ich etwas Interessantes bemerkt, als ich mir Python 3.3 Grammatik-Spezifikation :
funcdef: 'def' NAME parameters ['->' test] ':' suite
Der optionale "arrow"-Block fehlte in Python 2, und ich konnte keine Informationen über seine Bedeutung in Python 3 finden. Es stellte sich heraus, dass dies korrektes Python ist und vom Interpreter akzeptiert wird:
def f(x) -> 123:
return x
Ich dachte, dass dies eine Art Vorbedingungssyntax sein könnte, aber:
- Ich kann nicht testen
x
da sie noch nicht definiert ist, - Egal, was ich nach dem Pfeil einfüge (z. B.
2 < 1
), hat dies keine Auswirkungen auf das Verhalten der Funktion.
Könnte jemand, der mit diesem Syntaxstil vertraut ist, ihn erklären?