我今天在摆弄我的代码时注意到了一些东西:
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'
与None
和0
不同。为什么float("nan")
不被认为是虚假的?
欢呼
答案 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(非数字)的字符串,或者是正无穷大或负无穷大。