Python`None`传入typeconversion函数

2024-04-19 07:13:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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)返回类型错误-如果它们从中返回[]{}()00.0,这将是一个明显的错误,在许多实际场景中非常有用,可以避免手动处理。

如果有人能解释是什么促使Guido走上相反的道路,我们将不胜感激。你知道吗

附言:这个问题产生于Python: most idiomatic way to convert None to empty string?。大多数答案都是if-else方法,在现实生活中,用空字符串、list、dict或0转换/重写None是很常见的。你知道吗


Tags: to函数字符串nonefalse类型string错误
1条回答
网友
1楼 · 发布于 2024-04-19 07:13:19

None仍然是一个对象。它不是一个空值,它只是一个哨兵,你可以在任何地方使用它来产生或使用一个对象,但是你真的想让它保持空。你知道吗

函数调用不需要参数,调用没有参数的对象是完全有效的。因此,传递None是没有意义的,因为那将是一个参数,而不是零。你知道吗

要使用类型函数创建“空”对象,只需将参数列表留空:

>>> list()
[]
>>> tuple()
()
>>> str()
''

bool()提供传入参数的布尔类型。你可以不加参数地调用它:

>>> bool()
False

但是如果传入None,它将确定该对象的真值。对于None,该值是Falsestr(None)生成字符串'None',该字符串不是空的,因此在传递给bool()时是True。参见Truth Value Testing section。你知道吗

相关问题 更多 >