2016-09-22 5 views
-1

Kann mir bitte jemand sagen, was ist der Unterschied zwischen zwei Funktionen? Sie sehen beide ziemlich ähnlich aus, mit Ausnahme von ->.Verwendung von `->` in Python?

foo1()

def foo1() -> None: 
pass 

foo2()

def foo2(): 
pass 

Als ich sie die Handlung in ähnlicher Weise nennen. Warum also -> None? Ich kenne die Verwendung von None von Python.

HINWEIS: Ich habe versucht, mit "-> in Python" in Google und Stack Overflow zu suchen. Nichts kam auf. Probieren Sie es selbst aus. Zu diesem Zeitpunkt kannte ich nicht einmal den Begriff type hints.

+0

'foo1' verwendet [Typ Hinweise] (https://docs.python.org/3/library/typing.html) – idjaw

+0

Siehe auch: http://stackoverflow.com/questions/29770412/how-why -does-python-type-hinting-syntax-work – TerryA

+0

@ JimFasarakis-Hilliard Zuerst habe ich versucht mit "-> in Python" in Google und in Stack Overflow zu suchen. Nichts kam auf. Versuchen Sie es selbst. Ich kannte den Begriff Typhinweis nicht. Also was hätte ich tun können? – BlackBeard

Antwort

2

Dies wird type hinting genannt, und wird nur verwendet, um dem Programmierer das Verständnis der Rückgabe- und Eingabetypen eines Programms zu erleichtern und um zu ermöglichen, dass externe Linting- und statische Analyseprogramme auf Python funktionieren. Here is the official RFC explaining why it exists.

Typ Hinweise werden von Python sowieso nicht verwendet (weil Python dynamisch typisiert ist - die Typen werden bei Laufzeit bestimmt, nicht zur Kompilierzeit, wenn die Quelle tatsächlich analysiert wird) und kann sicher weggelassen werden.

Funktionen, die Ihrer Version 2 entsprechen, sind in jedem Fall vollkommen in Ordnung.

Python 3 hat integrierte Unterstützung für Typhinweise mit dem Modul typing, während Python 2.7 das Modul mypy von Drittanbietern benötigt.

+1

Genauer gesagt ist das 'typing' Modul ein Teil der Standardbibliothek in Python 3.5, muss aber als 3rd Party Library installiert werden für Python 2.7 bis 3.4. Die Anmerkungen zu "SYNTAX" für Funktionen wurden jedoch in Python 3.0 hinzugefügt. Um Typ-Anmerkungen in Python 2.7 zu verwenden, müssen Sie die Kommentare in dem im PEP beschriebenen Format verwenden. Unabhängig davon, welche Python-Version Sie verwenden, müssen Sie einen Third-Party-Type-Checker installiert haben, egal ob mypy, pytype, Pycharms eingebauter Checker, etc ... (Wie sich herausstellt, gibt es ein blühendes Ökosystem von Bibliotheken und Tools die Typhinweise verstehen). – Michael0x2a