Python 関数定義における -> の意味は何ですか? 質問する

Python 関数定義における -> の意味は何ですか? 質問する

最近、面白いことに気づいた。Python 3.3 文法仕様:

funcdef: 'def' NAME parameters ['->' test] ':' suite

オプションの「矢印」ブロックは Python 2 には存在せず、Python 3 での意味に関する情報は見つかりませんでした。これは正しい Python であり、インタープリターによって受け入れられることがわかりました。

def f(x) -> 123:
    return x

これは何らかの前提条件構文かもしれないと思いましたが、

  • xまだ定義されていないので、ここではテストできません。
  • 矢印の後に何を入れても (例2 < 1)、関数の動作には影響しません。

この構文スタイルに詳しい人は説明してもらえますか?

ベストアンサー1

それは関数注釈

詳しく言うと、Python 2.x には docstrings があり、これを使用するとさまざまな種類のオブジェクトにメタデータ文字列を添付できます。これは非常に便利なので、Python 3 ではこの機能が拡張され、関数にパラメータと戻り値を説明するメタデータを添付できるようになりました。

事前に想定された使用例はありませんが、PEP ではいくつか提案されています。非常に便利な例の 1 つは、パラメータに期待される型を注釈付けできるようにすることです。そうすれば、注釈を検証したり、引数を正しい型に強制変換したりするデコレータを簡単に作成できます。もう 1 つは、パラメータ固有のドキュメントを docstring にエンコードするのではなく、許可することです。

おすすめ記事