また、Python 3.X(のみ)は、関数定義を一般化して、引数と戻り値に拡張で使用するオブジェクト値の注釈を付けることを許可します
。
関数の値をより明確にするために説明するMETAデータ。
注釈は:value
、引数名の後、デフォルトの前、および->value
引数リストの後のようにコーディングされます。
それらは__annotations__
関数の属性に収集されますが、Python自体では特別なものとして扱われません。
>>> def f(a:99, b:'spam'=None) -> float:
... print(a, b)
...
>>> f(88)
88 None
>>> f.__annotations__
{'a': 99, 'b': 'spam', 'return': <class 'float'>}
出典:Python Pocket Reference、Fifth Edition
例:
このtypeannotations
モジュールは、Pythonコードの型チェックと型推論のための一連のツールを提供します。また、関数やオブジェクトに注釈を付けるのに役立つタイプのセットも提供します。
これらのツールは主に、リンター、コード補完ライブラリー、IDEなどの静的アナライザーで使用するように設計されています。さらに、実行時チェックを行うためのデコレーターが提供されます。Pythonでは、実行時の型チェックは必ずしも良い考えではありませんが、場合によっては非常に役立つことがあります。
https://github.com/ceronman/typeannotations
タイピングがより良いコードを書くのにどのように役立つか
タイピングは、コードを本番環境に送信する前に型エラーをキャッチする静的コード分析を行い、明らかなバグを防ぐのに役立ちます。mypyのようなツールがあり、ソフトウェアライフサイクルの一部としてツールボックスに追加できます。mypyは、コードベースに対して部分的または完全に実行することにより、正しいタイプをチェックできます。mypyは、関数から値が返されたときにNoneタイプをチェックするなどのバグを検出するのにも役立ちます。タイピングはコードをよりクリーンにするのに役立ちます。docstringで型を指定するコメントを使用してコードを文書化する代わりに、パフォーマンスを犠牲にすることなく型を使用できます。
Clean Python:PythonでのエレガントなコーディングISBN:ISBN-13(pbk):978-1-4842-4877-5
PEP 526-変数アノテーションの構文
https://www.python.org/dev/peps/pep-0526/
https://www.attrs.org/en/stable/types.html