我正在检查此行的函数参数是float还是int,并且它始终返回false,有人可以解释为什么会发生这种情况吗?
def distance_from_zero(number):
if type(number) == (int or float):
return abs(number)
else:
return "Nope"
答案 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这通常更清晰,更简单。