type(number)==(float或int)返回false python

时间:2018-11-09 21:20:26

标签: python

我正在检查此行的函数参数是float还是int,并且它始终返回false,有人可以解释为什么会发生这种情况吗?

def distance_from_zero(number):
    if type(number) == (int or float):
        return abs(number)
    else:
        return "Nope"

2 个答案:

答案 0 :(得分:5)

这是最短,最Python化的方法。

使用isinstance

if isinstance(number, (int, float)):

答案 1 :(得分:0)

本着Easier to ask for forgiveness than permission的精神,您可以使用异常来代替显式类型检查,例如

def distance_from_zero(number):
    try:
        return abs(number)
    except TypeError:
        return 'Nope'


for x in [1, 1.1, 'a']:
    print(x, distance_from_zero(x))

1 1
1.1 1.1
a Nope

IMO这通常更清晰,更简单。