4

Python 3 では、関数パラメーターに説明を追加できます。

def foo(host: 'ip address for connection')
    cool_stuff()

また、後で確認できる予想されるタイプを指定することもできますmypy

def foo(host: str)
    cool_stuff()

どちらも私の目には非常に便利です-両方を組み合わせてmypy一貫性をチェックできる方法はありますか?

4

1 に答える 1

6

PEP 484いいえ、関数注釈、型ヒントの明確かつ唯一の使用を提供するために、それが書かれた理由の一部です。

具体的には、既存の用途に関するセクションで、次のように述べています。

引数の 1 行は、PEP 3107 が関数注釈での任意の式の使用を明示的にサポートしていることを指摘しています。その場合、新しい提案は PEP 3107 の仕様と互換性がないと見なされます。

そして次のように述べています。

型ヒントが最終的に注釈の唯一の用途になることを願っていますが、これには Python での型付けモジュールの最初のロールアウト後に、追加の議論と非推奨期間が必要になります。

両方を指定することが検討されましたが、コードの可読性が低下したために明らかに拒否された代替案:

これらすべてのオプションにもかかわらず、個々の引数に対して型ヒントやその他の形式の注釈を共存させる提案が回覧されています。ある提案では、特定の引数の注釈が辞書リテラルである場合、各キーは異なる形式の注釈を表し、キー'type'は型ヒントに使用されることを示唆しています。このアイデアとその変形の問題点は、表記が非常に「うるさく」なり、読みにくくなることです。

両方を許可すると、この PEP の要点が打ち消され、注釈の使用が断片化されます。最終的には、パラメーターを文書化するために古き良き docstring を使用し、型ヒントのみに関数注釈を使用することに固執するのが最善の選択肢です。

于 2016-11-17T12:09:01.493 に答える