我正在学习如何使用MyPy。我认为以下代码应该引发警告,因为它可能会返回True
,而不是int
作为注释。但是当与mypy program.py
一起跑时,MyPy对此保持沉默。
import typing
def is_prime(n: int) -> int:
for i in range(2, n):
if n % i == 0:
return n
return True
我在这里做错了吗?
Python 2.3中添加了一个布尔类型。内置模块中添加了两个新常量,True和False。 (True和False常量被添加到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
参考: