Python 中的 type hint (类型提示) 是指在声明变量的时候显式声明变量的数据类型的功能,在 Python3.5及后续版本中可用。类型提示是对 Python 这种弱类型语言的补充,可以在一定程度上提高代码的可读性和可维护性,使用方法很简单就是在变量后面使用 :类型
对变量的类型进行注解
def greeting(name: str) -> str:
return 'Hello ' + name
通过类型提示和一些工具可以在运行之前就可以将一些错误提前暴露出来。普通变量的类型提示都很简单,但是 Python 里有一个相对特殊的类型就是生成器。
generator type hint
通常我们可以使用 Generator[YieldType, SendType, ReturnType]
去类型提示一个生成器
def echo_round() -> Generator[int, float, str]:
sent = yield 0
while sent >= 0:
sent = yield round(sent)
return 'Done'
其中 SendType
则是预期调用 send()
函数的时传递的值类型,而 ReturnType
则是生成器结束时返回的值
>>> gen = echo_round()
>>> next(gen)
0
>>> gen.send(1.5)
2
>>> gen.send(2.5)
2
>>> try:
... gen.send(-1)
... except StopIteration as e:
... result = e.value
...
>>> print(result)
Done
但是有时候,我们用生成器只是生成值,SendType
和 ReturnType
基本都是 None
def infinite_stream(start: int) -> Generator[int, None, None]:
while True:
yield start
start += 1
这个时候使用 Generator[YieldType, SendType, ReturnType]
这种 type hint 似乎有点累赘,可以使用 Iterable[YieldType]
或者 Iterator[YieldType]
:
def infinite_stream(start: int) -> Iterator[int]:
while True:
yield start
start += 1
参考资料
- PEP 484 – Type Hints | peps.python.org
- How to type hint a generator in Python 3? - Stack Overflow
- How to type hint a generator in python 3? - StackTuts
- 26.1. typing — Support for type hints — Python 3.6.15 documentation
Python 中的 type hint (类型提示) 是指在声明变量的时候显式声明变量的数据类型的功能,在 Python3.5及后续版本中可用。类型提示是对 Python 这种弱类型语言的补充,可以在一定程度上提高代码的可读性和可维护性,使用方法很简单就是在变量后面使用
:类型
对变量的类型进行注解通过类型提示和一些工具可以在运行之前就可以将一些错误提前暴露出来。普通变量的类型提示都很简单,但是 Python 里有一个相对特殊的类型就是生成器。
generator type hint
通常我们可以使用
Generator[YieldType, SendType, ReturnType]
去类型提示一个生成器其中
SendType
则是预期调用send()
函数的时传递的值类型,而ReturnType
则是生成器结束时返回的值但是有时候,我们用生成器只是生成值,
SendType
和ReturnType
基本都是None
这个时候使用
Generator[YieldType, SendType, ReturnType]
这种 type hint 似乎有点累赘,可以使用Iterable[YieldType]
或者Iterator[YieldType]
:参考资料