根据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中使用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.谢谢!
在以下代码中:
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?谢谢.