Python 中的 Typing.cast 有什么作用?

Cra*_*aig 16 python types casting

import typing
type(typing.cast(int, '11'))
Run Code Online (Sandbox Code Playgroud)

仍然返回<class 'str'>而不是int. 那么,typing.cast这里有什么作用呢?

Zev*_*les 18

文档(强调我的):

将值转换为类型。

这将返回不变的值。对于类型检查器,这表明返回值具有指定的类型,但在运行时我们故意不检查任何东西(我们希望这尽可能快)。

“铸造”只发生在类型检查系统中,而不是在现实中。

  • @Craig:PEP 484 的 [这部分](https://www.python.org/dev/peps/pep-0484/#casts) 可能会有所帮助。`类型转换不同于类型注释(参见上一节)。使用类型注释时,类型检查器仍应验证推断的类型是否与声明的类型一致。使用强制转换时,类型检查器应该盲目相信程序员。此外,强制转换可用于表达式,而类型注释仅适用于赋值。` (6认同)
  • 要将字符串 `"11"` 实际转换为 int,如果要使用非十进制基数(基数中的 '11'),请使用 `int('11')` 或 `int('11', 2)` 2 与基数 10 中的 '3' 相同)。 (3认同)
  • @joel `cast` 会让你做任何事情,例如 `result: int = cast(int, None); result += 1` 显然在运行时失败。 (2认同)