2013-12-20 5 views
7

あなたはそうのように、パラメータや戻り値の種類を示すためのpython 3にfunction annotationsを使用することができますか?関数が関数注釈を介して関数をパラメータとして期待するか、関数を返すかを指定する方法は?</p> <pre><code>def myfunction(name: str, age: int) -> str: return name + str(age) #usefulfunction </code></pre> <p>しかし、あなたは、パラメータとしての機能を期待する関数を書き、または1を返した場合:

私は、注釈に有効な式を書くことができるので、「関数」を文字列として書くことができることを認識していますが、それを行う最善の方法ですか?内蔵タイプint/float/str/list/dictなどのようなものはありませんか?私はcallableを知っていますが、他に何かがあるかどうか疑問に思っています。

答えて

7

アノテーションにスタイルが定義されていません。 callabletypes.FunctionTypeまたは文字列を使用してください。

PS:callableは、Python 3.0では利用できませんでしたし、3.1

+0

それは '<呼び出し可能組み込み関数>その結果として、私は' – eikonomega

4

非常に興味深いが...私も通訳に次のコードは、あなたが場所でfunctionを使用する場合がありますことを示唆しているPythonの3の機能注釈聞いたことがありませんstrおよびintである。ちょうど私の2セント。

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

が、気を悪くしないでください 'ではなく' <クラス「関数」>より '__annotations__'のために返される' callable'を使用しないことをお勧め一時間前まで私はいなかった。毎日何か新しいことを学んでください.... – Aerovistae

+0

type(a)aがintの場合には一重引用符が丸められています。例では関数のまわりにありますが、使用するときにはintの周りに一重引用符は使用しませんPython 3の型アノテーションとして。 – mcarans

+0

@mcaransそれは良い点です、ありがとう! – SimonT

関連する問題