如何在Python中为类型转换函数正确使用Type Hints?
Python类型提示在type_casting函数中的正确用法
你的思路方向是对的,但需要补充必要的类型导入,同时修正原函数中的错误(返回Exception对象是不合理的,应该抛出异常而非返回异常实例)。以下是正确的实现方式:
步骤1:导入所需类型
需要从typing模块(Python 3.9+可直接使用标准库原生类型语法)导入Any和Type。
步骤2:正确的类型提示与函数实现
from typing import Any, Type # 定义允许转换的类型集合 T = int | float | str | bool def type_casting(var: Any, _type: Type[T]) -> T: if _type not in (str, int, float, bool): raise TypeError("仅支持str、int、float、bool类型转换") return _type(var) # 验证断言 assert type_casting("55", int) == 55 assert type_casting(55, str) == "55" assert type_casting("3.14", float) == 3.14 assert type_casting(1, bool) is True
关键说明
Type[T]表示传入的参数是T集合中某一类型的类对象(比如int、str本身,而非它们的实例)- 返回值标注为
T,类型检查器会根据传入的_type自动推断具体的返回值类型 - 原函数中
return Exception的逻辑错误,抛出异常才符合类型约定和常规错误处理逻辑
如果使用Python 3.9及以上版本,还可以用原生的type[T]替代Type[T],无需额外导入Type:
from typing import Any T = int | float | str | bool def type_casting(var: Any, _type: type[T]) -> T: if _type not in (str, int, float, bool): raise TypeError("仅支持str、int、float、bool类型转换") return _type(var)
内容的提问来源于stack exchange,提问作者Boris Mirzakhanyan
相关产品推荐
相关产品推荐

