MyPy对清除类型错误不发出警告,我是否认为错误?

时间:2019-04-23 15:49:49

标签: python python-3.x mypy

我正在学习如何使用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

我在这里做错什么了吗?

1 个答案:

答案 0 :(得分:0)

  

布尔类型已添加到Python 2.3。添加了两个新常数   到内置模块中,是非。 (真假常数   已添加到Python 2.2.1中的内置功能中,但是2.2.1版本   只需将其设置为1和0的整数值就可以了   类型。)

boolint的子类,具有两个单独值TrueFalse,分别等于10 。 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

引用: