答案 0 :(得分:2)
bool
是int
的子类,这意味着它们都是自然数。自然数是实数的子集,因此在可接受浮点数的情况下可以接受。
在PEP 484 -- Type Hints中明确指出了在指定int
的情况下float
是可接受的:
此PEP并不是要求用户先写
import numbers
然后再使用numbers.Float
等,而是提出了一个几乎有效的快捷方式:当参数被注释为类型为float
时,可接受类型为int
的参数[。]
您的str
中的Union[]
组件在这里没有任何作用;您可以将其删除,但仍然可以接受分配。纯粹是float
类型的注释使12
和False
的值可以接受。
int()
调用完全是多余的,12
文字语法已经产生了一个int
对象。