Python 3.x支持(可选)函数注释:
def add_ints(x:int, y:int) -> int :
return x+y
我有时会遇到如何表示给定"类型"可以表示,这次,我有一个返回生成器的函数:
def myfunc(x: [int]) -> "generator that returns ints":
# ^~~~~~~~~~~~~~~~~~~~~~~~~~
return (n for n in x if n%2 == 0)
我应该如何注释返回值?有什么参考我可以咨询吗?
答案 0 :(得分:21)
答案 1 :(得分:10)
虽然Generator[x, y, z]
存在,但在大多数情况下,您可能想使用不太冗长的Iterator
:
def add_ints(x: int) -> Iterator[int]:
return (n for n in range(x) if n%2 == 0)
也为yield
def add_ints(x: int) -> Iterator[int]:
for n in range(x):
yield n
答案 2 :(得分:1)
Python 3中的注释可以是任何有效的表达式,而不仅仅是一种类型,并且实际上并未用于内部任何内容(有关注释的更多信息,https://www.python.org/dev/peps/pep-3107)。没有关于如何使用这些注释的指导或标准,因此它们可以以对编码器最简单的方式使用(参见https://www.python.org/dev/peps/pep-0008#programming-recommendations)。
在您的特定情况下,您可以使用字符串或全局变量来指示您的类型,或者可能使用types.GeneratorType
,尽管无法指示生成器生成int
。