将None
类型传递到类型转换函数的设计决策的基本原理是什么?你知道吗
bool(None)
返回False
-这很有道理
str(None)
返回'None'
这是不好的-返回空字符串将是一个更好的选择,如下所示
>>> bool(None)
False
>>> bool(str(None)) #Returning empty string will make it consistent by returning False
True
>>> bool('')
False
和list(None)
、dict(None)
、tuple(None)
、int(None)
、float(None)
返回类型错误-如果它们从中返回[]
、{}
、()
、0
和0.0
,这将是一个明显的错误,在许多实际场景中非常有用,可以避免手动处理。
如果有人能解释是什么促使Guido走上相反的道路,我们将不胜感激。你知道吗
附言:这个问题产生于Python: most idiomatic way to convert None to empty string?。大多数答案都是if-else方法,在现实生活中,用空字符串、list、dict或0转换/重写None是很常见的。你知道吗
None
仍然是一个对象。它不是一个空值,它只是一个哨兵,你可以在任何地方使用它来产生或使用一个对象,但是你真的想让它保持空。你知道吗函数调用不需要参数,调用没有参数的对象是完全有效的。因此,传递
None
是没有意义的,因为那将是一个参数,而不是零。你知道吗要使用类型函数创建“空”对象,只需将参数列表留空:
bool()
提供传入参数的布尔类型。你可以不加参数地调用它:但是如果传入
None
,它将确定该对象的真值。对于None
,该值是False
。str(None)
生成字符串'None'
,该字符串不是空的,因此在传递给bool()
时是True
。参见Truth Value Testing section。你知道吗相关问题 更多 >
编程相关推荐