217

Python 3 の関数注釈を使用すると、PyCharm や他の IDE での型ヒントの目的で、同種のリスト (または他のコレクション) に含まれる項目の型を指定できますか?

int のリストの擬似 python コード例:

def my_func(l:list<int>):
    pass

Docstringを使用して可能であることは知っています...

def my_func(l):
    """
    :type l: list[int]
    """
    pass

...しかし、可能であれば注釈スタイルを好みます。

4

5 に答える 5

241

私自身の質問に答えます。TLDR の答えはNo Yesです。

更新 2

2015 年 9 月に、型ヒントをサポートする Python 3.5 がリリースされ、新しい型付けモジュールが含まれています。これにより、コレクションに含まれる型を指定できます。2015 年 11 月の時点で、JetBrains PyCharm 5.0 は Python 3.5 を完全にサポートし、以下に示すように型ヒントを含めます。

型ヒントを使用した PyCharm 5.0 コード補完

更新 1

2015 年 5 月の時点で、PEP0484 (Type Hints)が正式に承認されました。ドラフト実装は、github の ambv/typehinting からも入手できます。

元の回答

2014 年 8 月の時点で、Python 3 の型注釈を使用してコレクション内の型を指定できないことを確認しました (例: 文字列のリスト)。

reStructuredText や Sphinx などのフォーマットされた docstring の使用は実行可能な代替手段であり、さまざまな IDE でサポートされています。

また、Guido は、mypy の精神で型注釈を拡張するというアイデアを熟考しているようです: http://mail.python.org/pipermail/python-ideas/2014-August/028618.html

于 2014-08-15T02:37:15.947 に答える
142

Python 3.5 が正式にリリースされたので、Type Hints をサポートするモジュールtypingと、汎用コンテナーに関連するList「型」があります。

つまり、次のことができるようになりました。

from typing import List

def my_func(l: List[int]):
    pass
于 2015-10-25T01:55:52.447 に答える
68

Python 3.9 以降、組み込み型は型注釈に関してジェネリックです ( PEP 585を参照)。これにより、要素のタイプを直接指定できます。

def my_func(l: list[int]):
    pass

Python 3.9 よりも前に、さまざまなツールがこの構文をサポートしている可能性があります。注釈が実行時に検査されない場合、構文は引用符またはを使用して有効です__future__.annotations

# quoted
def my_func(l: 'list[int]'):
    pass
# postponed evaluation of annotation
from __future__ import annotations

def my_func(l: list[int]):
    pass
于 2020-07-07T12:48:41.290 に答える
4

BDFL のサポートにより、Python (おそらく 3.5) が関数注釈を介して型ヒントの標準化された構文を提供することがほぼ確実になりました。

https://www.python.org/dev/peps/pep-0484/

PEP で参照されているように、既にこの標準を使用しており、新しい構文を必要としない mypy という実験的な型チェッカー (pylint に似ていますが、型用) があります。

http://mypy-lang.org/

于 2015-01-30T21:52:07.590 に答える