MyPy没有提供明确类型错误的警告,我错了吗?

问题描述 投票:0回答:1

我正在学习如何使用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 python-3.x mypy
1个回答
0
投票

Python 2.3中添加了一个布尔类型。内置模块中添加了两个新常量,True和False。 (True和False常量被添加到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

参考:

© www.soinside.com 2019 - 2024. All rights reserved.