mat*_*urg 6 python type-hinting unions
一方面,我了解到可以int或float应该被类型注释的数字float(来源:PEP 484 类型提示和这个 stackoverflow 问题):
def add(a: float, b: float):
return a + b
Run Code Online (Sandbox Code Playgroud)
另一方面, anint不是 的实例float:
issubclass(int, float) 返回 Falseisinstance(42, float) 返回 False因此,我希望Union[int, float]成为此用例的正确注释。
问题:
int/float型注释的特例?还有其他类似的例子吗?Union[float, int]这是否是意外使用?
- int/float 是类型注释中的特例吗?
float是特例。 int不是。PEP 484 说,在下面的段落中,您问题中的链接所引用的段落:
当参数被注释为具有 type 时
float,类型的参数int是可以接受的;
所以接受intwherefloat被注解是一种特殊的情况,与注解通常处理类层次结构的方式无关。
还有其他类似的例子吗?
是的,至少还有另外一种特殊情况。在同一段落中,PEP 484 继续说:
对于注释为具有类型的
complex参数,类型float或类型的参数int是可接受的。
- 是否有任何 linter 会警告我
Union[float, int]这是否是意外使用?
Union[float, int] 完全没问题。
float注释的特殊处理只是一种方便(PEP 484 称其为“快捷方式”),让人们避免写出冗长的Union[float, int]注释,因为可以是 afloat或 anint的参数非常常见。
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |