为什么“ NaN”在python中不被认为是虚假的?

时间:2019-02-14 10:43:23

标签: python nan

我今天在摆弄我的代码时注意到了一些东西:

print("lol") if None else print("Not lol") # Displays 'Not lol'
print("lol") if 0 else print("Not lol") # Displays 'Not lol'
print("lol") if float("nan") else print("Not lol") # Displays 'lol'

None0不同。为什么float("nan")不被认为是虚假的?

欢呼

2 个答案:

答案 0 :(得分:1)

OP:与“无”和“ 0”不同。为什么不将float(“ nan”)视为Falsy?

回答:Because that's what the language designers decided would be most useful.

print(bool(float('nan')))  # returns True

因此:

print("lol") if float("nan") else print("Not lol")

输出:

lol

答案 1 :(得分:1)

这不是虚假的,因为它是float的有效字符串参数。您可以在文档中找到更多信息。 https://docs.python.org/3/library/functions.html?highlight=float#float

  

如果参数是一个字符串,则它应包含一个十进制数,可以选择在其后加上一个符号,并可以选择将其嵌入空格中。可选符号可以是“ +”或“-”; “ +”号对产生的值没有影响。 参数也可以是代表NaN(非数字)的字符串,或者是正无穷大或负无穷大。