概要

Pythonの関数定義で -> が使われるようになったのはPython 3からで、これは関数の戻り値の型アノテーションを示す記号です。-> はあくまで「ヒント」であり、Pythonインタプリタ自体はその型を強制することはありません。これはプログラムの読みやすさや型チェックツール(例: mypy)を使った静的型チェックに役立ちます。

使用例

例えば、次のように定義された関数では、戻り値が整数型であることをアノテーションで示しています。

def example(x: int) -> int:
    return x + 1

この場合、example.__annotations__ を確認すると、戻り値が int 型としてアノテーションされていることがわかります。

print(example.__annotations__)
# 結果: {'x': <class 'int'>, 'return': <class 'int'>}

このアノテーションを使うことで、コードを読みやすくし、第三者が関数の引数や戻り値の型を理解しやすくなります。

型アノテーションのメリット

  1. コードの可読性向上
    型アノテーションを追加することで、関数の仕様を明確に示し、他の開発者がコードを理解しやすくなります。
  2. 静的型チェックツールと併用
    Python自体は型を強制しませんが、外部ツール(例: mypy)を使うことで、コードの型に関するエラーを事前にチェックできます。これにより、実行時エラーの発生を未然に防ぐことができます。
  3. ドキュメント生成への活用
    アノテーションは、自動ドキュメント生成ツールによって関数の引数や戻り値の型として表示され、ドキュメンテーションにも役立ちます。

制限事項

型アノテーションはあくまで「ヒント」であり、Pythonはこれを強制しません。例えば、次のようなコードはエラーにはなりませんが、意図した型と違う値を返しています。

def example(x: int) -> str:
    return x + 1

このコードでは、str 型を戻り値として期待していますが、実際には整数が返されます。このような場合、静的型チェックツールを使わない限り、Python自体はエラーを報告しません。

Python 3.5以降の型ヒントの進化

Python 3.5から導入されたPEP 484では、型ヒントが公式にサポートされるようになりました。これにより、関数定義での引数や戻り値の型指定がより洗練され、型安全なコードを書くための基盤が整いました。

結論

Python-> は関数の戻り値に対する型アノテーションを表し、型ヒントとして利用されます。これはコードの可読性を高め、静的型チェックツールと連携することで、より堅牢なコードを書くのに役立ちます。Python自体は型を強制しませんが、mypyのようなツールを使用することで、型に関する問題を事前に検出できます。