2016-09-22 4 views
-1

誰でも次の2つの機能の違いは何ですか?彼らは->を除いて、どちらもかなり似ています。Pythonで ` - >`を使う?

foo1は()

def foo1() -> None: 
pass 

foo2は()

def foo2(): pass 

私は同様の方法で行為それらを呼び出す

。なぜ -> None?を使用するのですか?私はPythonの Noneの使用を知っています。

注:Googleの「 - > in Python」と「Stack Overflow」で検索しようとしました。 何も出てこなかった。自分で試してみてください。その時点で私は用語type hintsを知りませんでした。

+0

'foo1'は[タイプヒント](https://docs.python.org/3/library/typing.html)を使用しています – idjaw

+0

も参照してください:http://stackoverflow.com/questions/29770412/how-why – TerryA

+0

@ JimFasarakis-Hilliardまず、Googleの「 - > in Python」とStack Overflowで検索を試みました。何もなかったあなた自身のために試してみてください。私はタイプヒントという言葉を知らなかった。それで私は何をすることができましたか? – BlackBeard

答えて

2

これは、プログラマーがプログラムの戻り値と入力の型を理解しやすくするだけでなく、外部のリンキングと静的解析プログラムがPython上で動作することを可能にするのに役立ちます。 Here is the official RFC explaining why it exists

Pythonが動的に型指定されているため、実際には型ヒントは使用されません。タイプはランタイムであり、ソースが実際に解析されるときはコンパイル時ではなく、安全に省略できます。

バージョン2に準拠した機能は、どの場合でも完璧に機能します。

Python 3にはtypingモジュールのタイプヒントが組み込まれていますが、Python 2.7ではサードパーティのmypyモジュールが必要です。

+1

もっと正確に言えば、 'typing'モジュールはPython 3.5の標準ライブラリの一部ですが、第三者のライブラリとしてインストールする必要がありますPython 2.7から3.4の場合しかし、Python 3.0では関数アノテーションの_syntax_が追加されました。Python 2.7で型アノテーションを使用するには、PEPに記述されている形式のコメントを使用する必要があります。使用しているPythonのバージョンにかかわらず、それはmypy、pytype、Pycharmの組み込みチェッカーなど、サードパーティのタイプのチェッカーをインストールする必要があります(これは、ライブラリとツールの新興エコシステムですタイプヒントを理解している人)。 – Michael0x2a

関連する問題