Python 3.x中是否有类似TypeScript `as`的静态类型断言方法
Python 3.x 中无运行时转换的类型断言方案
在Python 3.x的类型系统里,确实存在和TypeScript中as关键字类似、不涉及运行时转换的类型断言技术,主要有两种实现方式:
1. 使用typing.cast(兼容Python 3.5+)
cast是专门用于向类型检查器传递类型信息的工具,它不会在运行时对数据做任何修改或转换,仅作用于静态类型检查阶段。
示例代码:
from typing import TypedDict, cast import requests class SpecificDict(TypedDict): foo: str bar: str res = cast(SpecificDict, requests.get(url).json())
2. 直接指定变量类型注解(兼容Python 3.6+)
通过给变量添加类型注解,直接告诉类型检查器该变量的预期类型,同样不会产生任何运行时开销。
示例代码:
from typing import TypedDict import requests class SpecificDict(TypedDict): foo: str bar: str res: SpecificDict = requests.get(url).json()
注意事项
以上两种方式都仅作用于静态类型检查,不会在运行时验证数据是否真的符合SpecificDict的结构。如果需要确保数据结构的正确性,你需要自行编写运行时校验逻辑(比如使用pydantic库),但这会涉及运行时转换,不属于无运行时转换的类型断言范畴。
内容的提问来源于stack exchange,提问作者Michael Moreno
相关产品推荐
相关产品推荐

