2013-12-20 6 views
7

Sie können function annotations in Python 3 verwenden, um die Typen der Parameter, um anzuzeigen, und Wert zurück, etwa so:Wie kann man angeben, dass eine Funktion eine Funktion als Parameter erwartet oder eine Funktion über Funktionskommentare zurückgibt?

def myfunction(name: str, age: int) -> str: 
    return name + str(age) #usefulfunction 

Aber was, wenn Sie eine Funktion geschrieben hat, die eine Funktion als Parameter erwartet, oder eine zurückgibt?

Ich weiß, dass Sie einen gültigen Ausdruck für die Annotationen schreiben können, also könnte ich "function" als String schreiben, aber ist das der beste/einzige Weg? Gibt es nichts wie die eingebauten Typen int/float/str/list/dict etc? Ich bin mir bewusst, callable, aber ich frage mich, ob es noch etwas gibt.

Antwort

7

Es ist kein Stil für Anmerkungen definiert. Verwenden Sie entweder callable, types.FunctionType oder eine Zeichenfolge.

PS: callable war in Python nicht verfügbar 3.0 und 3.1

+0

Ich würde vorschlagen, nicht mit 'callable' wie es in' Ergebnisse 'für' __annotations__' statt '' – eikonomega

4

Sehr interessant ... Ich habe noch nie von Funktion Anmerkungen in Python 3. Der folgende Code in dem Interpreter gehört schlägt Sie function anstelle verwenden könnten von str und int. Nur meine zwei Cent.

>>> a = lambda x: x*2 
>>> type(a) 
<class 'function'> 
+0

Fühlen Sie sich nicht schlecht zurückgegeben wird, Weder hatte ich noch vor einer Stunde. Lerne jeden Tag etwas Neues ... – Aerovistae

+0

type (a) wo a ist ein int gibt wo es einfache runde int gibt, genau wie um die Funktion in Ihrem Beispiel, aber wir verwenden keine einfachen Anführungszeichen um int, wenn Sie es verwenden als eine Art Anmerkung in Python 3. – mcarans

+0

@mcarans Das ist ein guter Punkt, danke! – SimonT

Verwandte Themen