dict.get('..',None)或None的情况是什么?

时间:2017-10-03 14:21:06

标签: python python-3.x

如果在某些开源库中找到以下代码:

message.get('title', None) or None

有没有理由这样做而不是message.get('title', None)

3 个答案:

答案 0 :(得分:18)

这将保证dict中的任何虚假值(例如None''0False[],......)变成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(第二个参数)。