在我知道的其他一些语言中,空到字符串转换的直观结果应该是空字符串。 为什么Python被设计成“None”是某种特殊的字符串? 在检查函数的返回值时,这会导致额外的工作
result = foo() # foo will return None if failure
if result is not None and len(str(result)) > 0:
# ... deal with result
pass
如果str(None)返回空字符串,则代码可能更短:
if len(str(result)) > 0:
# ... deal with result
pass
看起来Python试图变得冗长,使日志文件更容易理解?
通过检查
len(str(result))
来检查字符串中是否有字符绝对不是pythonic(请参见http://www.python.org/dev/peps/pep-0008/)。None
和''
强制为布尔值False
。如果你真的问为什么
str(None)
返回'None'
,那么我相信这是因为three-valued logic必须返回。True
、False
和None
可以一起用于确定逻辑表达式是True
、False
还是不能确定。标识函数是最容易表示的。如果
str(None)
是''
,那么下面的情况会非常奇怪:现在,如果你真的想得到一个权威的答案,就去问圭多。
如果你真的想让
str(None)
给你''
请阅读另一个问题:Python: most idiomatic way to convert None to empty string?基本上,因为空字符串不是
None
的表示。None是与空字符串或任何其他内容不同的特殊值。如the docs所述,str
应该基本上,
str
应该返回可打印和可读的内容。空字符串不是None
的可读表示形式。相关问题 更多 >
编程相关推荐