web-dev-qa-db-ja.com

Python 3注釈:指​​定されたタイプのリストを示唆するタイプ(PyCharm)

Python 3の関数アノテーションを使用すると、PyCharmや他のIDEでのタイプヒントの目的で、同種リスト(または他のコレクション)に含まれるアイテムのタイプを指定できますか?

Intのリストの擬似Pythonコードの例:

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



Docstringを使用することは可能です...

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

...しかし、可能な場合は注釈スタイルを好みます。

85
Eric W.

自分の質問に答える。 TLDRの答えは 番号 はい

更新2

2015年9月、Python 3.5がリリースされ、タイプヒントがサポートされ、 新しいtypingモジュール が含まれています。これにより、 2015年11月の時点で、JetBrains PyCharm 5.0は、Python 3.5を完全にサポートし、以下に示すようにタイプヒントを含めることができます。

PyCharm 5.0 Code Completion using Type Hints

アップデート1

2015年5月現在、 PEP0484(タイプヒント) は正式に受け入れられています。ドラフト実装は、 github under ambv/typehinting でも入手できます。

元の回答

2014年8月の時点で、コレクション内のタイプを指定するためにPython 3タイプアノテーションを使用できないことを確認しました(例:文字列のリスト)。

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

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

113
Eric W.

Python 3.5が正式にリリースされたので、Type Hintsをサポートするモジュールがあります- typing および関連する List 汎用コンテナの場合は「タイプ」。

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

from typing import List

def my_func(l: List[int]):
    pass
45
alecxe

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

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

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

http://mypy-lang.org/

4
Brendan Abel

PEP 484 以降、タイプコメントが追加されました

active_monitors = [] # type: List[Monitor]

これは現在、PyCharmでPython 3.6.4で動作しています

Pycharmのサンプル画像

2
CoreCreatives