Mar*_*ery 17 python type-hinting
Python的新类型提示功能允许我们输入函数返回的提示None...
def some_func() -> None:
pass
Run Code Online (Sandbox Code Playgroud)
...或者保留未指定的返回类型,PEP规定应该使静态分析器假定任何返回类型都是可能的:
任何没有注释的函数都应该被视为具有最普遍的类型
但是,我应该如何键入一个函数永远不会返回的提示?例如,键入提示这两个函数的返回值的正确方法是什么?
def loop_forever():
while True:
print('This function never returns because it loops forever')
def always_explode():
raise Exception('This function never returns because it always raises')
Run Code Online (Sandbox Code Playgroud)
-> None在这些情况下,指定或保留未指定的返回类型似乎都不正确.
从 Python 3.11 开始,新的底部类型 typing.Never应该用于类型不返回的函数,如
from typing import Never
def always_explode() -> Never:
raise
Run Code Online (Sandbox Code Playgroud)
这取代了typing.NoReturn
...使预期含义更加明确。
我猜测在某些时候它们会NoReturn在这种情况下被弃用,因为两者在 3.11 中都是有效的。
即使" PEP 484 - 类型提示 "标准提到了问题和答案,但没有人引用它的部分:涵盖您的问题的NoReturn类型.
引用:
该
typing模块提供了一种特殊类型NoReturn来注释永远不会正常返回的函数.例如,一个无条件地引发异常的函数:
from typing import NoReturn
def stop() -> NoReturn:
raise RuntimeError('no way')
Run Code Online (Sandbox Code Playgroud)
该部分还提供了错误用法的示例.虽然它不包含具有无限循环的函数,但在类型理论中它们同样满足永不返回由特殊类型表示的含义.
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |