我正在学习如何使用MyPy。我认为以下代码应发出警告,因为它可能返回True
,而不是带有注释的int
。但是MyPy与mypy program.py
一起运行时对此保持沉默。
import typing
def is_prime(n: int) -> int:
for i in range(2, n):
if n % i == 0:
return n
return True
我在这里做错什么了吗?
答案 0 :(得分:0)
布尔类型已添加到Python 2.3。添加了两个新常数 到内置模块中,是非。 (真假常数 已添加到Python 2.2.1中的内置功能中,但是2.2.1版本 只需将其设置为1和0的整数值就可以了 类型。)
bool
是int
的子类,具有两个单独值True
和False
,分别等于1
和0
。 Python内部进行此转换。
请参阅以下示例:
print(True + 1) # outputs 2
print(True - 1) # outputs 0
print(True - 2) # outputs -1
a = True
print(a) # outputs True because no mathematical calculation
print(True + True + 1) # Outputs 3
print(False + 1) # Outputs 3
print(False + True) # Outputs 1
引用: