小编Jin*_*hoi的帖子

在python 3.6中输入提示生成器

根据PEP-484,我们应该可以输入提示生成器函数,如下所示:

from typing import Generator

def generate() -> Generator[int, None, None]:
    for i in range(10):
        yield i

for i in generate():
    print(i)
Run Code Online (Sandbox Code Playgroud)

但是,列表推导在PyCharm中给出以下错误.

Expected 'collections.Iterable', got 'Generator[int, None, None]' instead less... (?F1)
Run Code Online (Sandbox Code Playgroud)

知道为什么PyCharm将此视为错误吗?谢谢.


阅读一些答案后的一些澄清.我正在使用PyCharm Community Edition 2016.3.2(最新版本)并导入了typing.Generator(在代码中更新).上面的代码运行得很好,但PyCharm认为这是一个错误:

在此输入图像描述

所以,我想知道这实际上是PyCharm中的错误还是不支持的功能.

python pycharm python-3.x

24
推荐指数
3
解决办法
7736
查看次数

可以在python 3中输入提示用于生成docstring吗?

我们可以在python中使用docstring指示函数参数的类型:

def f1(a):
    """
    :param a: an input.
    :type a: int
    :return: the input integer.
    :rtype: int
    """
    return a
Run Code Online (Sandbox Code Playgroud)

对于f1,autodoc生成以下文档:

fun1(a)
    Parameters : a (int) – an input.
    Returns    : the input integer.
    Return type: int
Run Code Online (Sandbox Code Playgroud)

在python 3中,类型也可以通过类型提示来表示:

def f2(a: int):
    """
    :param a: an input.
    :return: the input integer.
    :rtype: int
    """
    return a
Run Code Online (Sandbox Code Playgroud)

当我们运行autodoc时,它通过参数声明放置类型,但不在描述中:

f2(a: int)
    Parameters : a – an input.
    Returns    : the input integer.
    Return type: int
Run Code Online (Sandbox Code Playgroud)

是否可以f1使用注释而不是docstring 生成文档?我正在使用python 3.6.谢谢!

python python-3.x

8
推荐指数
1
解决办法
823
查看次数

如何在python 3.6中键入hinte高阶函数?

在以下代码中:

def b(i: int) -> int:
    return i

def a(i: int, b: ?) -> int:
    return i + b(i)

print(a(1, b))
Run Code Online (Sandbox Code Playgroud)

我们如何键入提示b: ?作为参数的函数a?谢谢.

python type-hinting python-3.x

2
推荐指数
1
解决办法
368
查看次数

标签 统计

python ×3

python-3.x ×3

pycharm ×1

type-hinting ×1