如果在某些开源库中找到以下代码:
message.get('title', None) or None
有没有理由这样做而不是message.get('title', None)
?
答案 0 :(得分:18)
这将保证dict中的任何虚假值(例如None
,''
,0
,False
,[]
,......)变成None
。即如果你有
d = {'title': False}
然后
d.get('title', None) # False
d.get('title', None) or None # None
是否有一个实用用例是有争议的,但肯定有一个微妙的区别......
另请注意,您可以将其简化为:
d.get('title') or None
因为如果找不到任何元素,d.get
默认返回None
。
答案 1 :(得分:1)
如果您收到消息并且它是false-y值,则会将其更改为None。
例如
message = {'title' : ''}
message.get('title', None)
>> ''
message.get('title', None) or None
>> None
答案 2 :(得分:-1)
有一个原因。
例如,message.get('title', None) or None
可能返回一个空字符串。 Python中空字符串的布尔值为False
,因此将返回None
。
这也适用于评估为dict
的{{1}}返回的任何其他值。将返回False
。
注意:但是,该代码最好写成None
,因为message.get('title') or None
默认返回dict.get
(第二个参数)。