2016-03-28 9 views
-1

def f(ham: str, eggs: str = 'eggs') -> str: print("Annotations:", f.__annotations__) print("Arguments:", ham, eggs) return ham + ' and ' + eggsBedeutung der Funktion „-> str“

In dem obigen Codeblock, der von bekam https://docs.python.org/3.5/tutorial/controlflow.html#documentation-strings

Meine Frage ist, über die -> str in dem obigen Codeblock. Was tut es ?

+2

Aber .. dieser Link * erklärt explizit * was es tut. Sie haben buchstäblich mit der kanonischen Dokumentation für diese Syntax verbunden. –

+0

@DanielRoseman 'def f (ham: str, Eier: str = 'eggs')' in diesem Block haben sie ** str ** erwähnt, also warum mussten sie das nochmal markieren/sagen? – Gourabo

+0

Weil die 'str' in diesem Block mit den Typen der übergebenen Variablen zu tun hat, nicht die, die zurückgegeben wird. – Bahrom

Antwort

2

Das sind Typ Hinweise. Verschiedene Typenprüfer können sie verwenden, um festzustellen, ob Sie die richtigen Typen verwenden. In Ihrem Beispiel erwartet Ihre Funktion ham vom Typ str und eggs vom Typ str (standardmäßig eggs). Die letzte -> str impliziert, dass diese Funktion auch einen Rückgabetyp von str haben sollte.

Weitere Informationen finden Sie unter:

+0

Was passiert, wenn ich es nicht als String zurückgebe? – Gourabo

+0

Ihr Code wird davon nicht betroffen sein - er würde immer noch ausgeführt werden, aber wenn Sie Ihren Code durch einen Typprüfung, wie [Mypy] (http://mypy.readthedocs.org/en/latest/basics.html#Type -checking-and-running-Programme), würden Sie eine Warnung erhalten. – Bahrom

+1

'Was, wenn ich es nicht als String zurückgebe?' Probieren Sie es aus und sehen Sie. Es hängt vom Kontext ab. Python wird nicht geben, überprüfen Sie die Rückkehr, wenn das ist, was Sie fragen. – dawg

0

Es gibt den Rückgabewert. Es hat nichts mit dem Code zu tun und dient nur zu Dokumentationszwecken.

Verwandte Themen