【发布时间】:2015-09-23 13:26:40
【问题描述】:
将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)返回类型错误 - 如果它们返回[],{},(), @987654336和0.0这将是显而易见的,并且在许多现实生活场景中将很有用,以避免手动处理。
如果有人能解释是什么可能促使 Guido 采取相反的方式,我们将不胜感激。
PS:这源于这个问题Python: most idiomatic way to convert None to empty string?。大多数答案都是 if-else 方法,在现实生活中,通过空字符串、列表、dict 或 0 转换/覆盖 None 是很常见的。
【问题讨论】:
-
当您可以测试真实性时,
bool(str(None))有什么用处? -
bool()采用 any 类型并确定布尔值。None在那里并不特别。str(None)产生字符串'None',它不是空的,所以True。其余的不要将None作为参数,也不应该。 -
我不确定您为什么认为传入
None会给您“空”对象。不要传入 any 参数,所以list()、tuple()和int()和float()。None仍然是一个对象,而不是一个空值。 -
同时将
None打印为None可以让您更轻松地区分变量为空还是返回不返回None而不是字符串的函数(由于错误等原因)。跨度> -
@Martijn Pieters♦ :单独来说,一切都可以正常工作,但我可以将
None与 Empty dict 或 Empty List 或 0 相关联,具体取决于转换为的数据类型。
标签: python types language-design nonetype