在我所知道的其他一些语言中,null到字符串转换的直观结果应该是一个空字符串.为什么Python被设计为使'None'成为一种特殊的字符串?在检查函数的返回值时,这可能会导致额外的工作
result = foo() # foo will return None if failure
if result is not None and len(str(result)) > 0:
# ... deal with result
pass
Run Code Online (Sandbox Code Playgroud)
如果str(None)返回空字符串,则代码可能更短:
if len(str(result)) > 0:
# ... deal with result
pass
Run Code Online (Sandbox Code Playgroud)
看起来Python试图变得冗长,使日志文件更容易理解?
dno*_*zay 12
通过检查检查字符串中是否包含字符len(str(result))绝对不是pythonic(请参阅http://www.python.org/dev/peps/pep-0008/).
result = foo() # foo will return None if failure
if result:
# deal with result.
pass
Run Code Online (Sandbox Code Playgroud)
None并''强制转换为布尔值False.
如果你真的在问为什么str(None)会返回'None',那么我相信这是因为三值逻辑是必要的.True,False并且None可以一起使用,以确定是否一个逻辑表达式为True,False或不能被确定.身份函数是最容易表示的.
True -> 'True'
False -> 'False'
None -> 'None'
Run Code Online (Sandbox Code Playgroud)
如果str(None)是,以下将是非常奇怪的'':
>>> or_statement = lambda a, b: "%s or %s = %s" % (a, b, a or b)
>>> or_statement(True, False)
'True or False = True'
>>> or_statement(True, None)
'True or None = True'
>>> or_statement(None, None)
'None or None = None'
Run Code Online (Sandbox Code Playgroud)
现在,如果你真的想要一个权威的答案,请问Guido.
如果你真的想str(None)给你,''请阅读另一个问题:Python:将无转换为空字符串的最常用的方法是什么?