为什么“NaN”在python中不被认为是假的? [重复]

问题描述 投票:-1回答:2

在摆弄我的代码时,我今天注意到了一些事情:

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")不被视为Falsy?

干杯

python nan
2个回答
1
投票

OP:与None和0不同。为什么浮动(“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")

OUTPUT:

lol

1
投票

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

如果参数是一个字符串,它应该包含一个十进制数字,可选地以符号开头,并且可选地嵌入在空格中。可选符号可以是“+”或“ - ”; “+”符号对产生的值没有影响。参数也可以是表示NaN(非数字)或正或负无穷大的字符串。

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