it-swarm.dev

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

...但如果有可能,我更喜欢注释样式。

70
Eric W.

回答我自己的问题; TLDR的答案是 没有 

更新2

2015年9月,Python 3.5发布时支持Type Hints,并包含一个 new typing module 。这允许指定集合中包含的类型。截至2015年11月,JetBrains PyCharm 5.0完全支持Python 3.5以包含类型提示,如下图所示。

PyCharm 5.0 Code Completion using Type Hints 

更新1

截至2015年5月, PEP0484(类型提示) 已正式被接受。实施草案也可以在 github下的ambv/typehinting 下载。

原始答案

截至2014年8月,我已经确认不可能使用Python 3类型注释来指定集合中的类型(例如:字符串列表)。

使用格式化的文档字符串(如reStructuredText或Sphinx)是可行的替代方案,并受各种IDE的支持。

看来,Guido正在考虑以mypy的精神扩展类型注释的想法: http://mail.python.org/pipermail/python-ideas/2014-August/028618.html

97
Eric W.

现在Python 3.5正式出来了,对于通用容器,有类型提示支持模块 - typing 和相关的 List “type”。

换句话说,现在你可以这样做:

from typing import List

def my_func(l: List[int]):
    pass
36
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