我有一个函数,可以在给定布尔输入参数的情况下返回不同类型.目前,我只使用Union对其进行注释:
def fn(x: int, ret_str: bool) -> Union[int, str]:
if ret_str:
return str(x)
else:
return x
但是,如果我这样注释,该函数的输出也将被类型化为联合类型.
out = fn(8, ret_str=False) # out will have type Union[int, str] but we know it's int
有没有办法注释它,以便类型判断器知道如果我使用文字False
调用函数,返回类型必须是int
而不是str
?