Python dict.get(';.';,None)或None的场景是什么?

Python dict.get(';.';,None)或None的场景是什么?,python,python-3.x,Python,Python 3.x,如果在某些开源库中找到以下代码: message.get('title', None) or None 有什么理由这样做而不是消息。get('title',None)?这将保证dict中的任何错误值(例如None,',0,False,[],…)将变为None。i、 如果你有 d = {'title': False} 然后 这是否有一个实际的用例是有争议的,但肯定有一个微妙的区别 还请注意,您可以将其简化为: d.get('title') or None 由于d.get默认情况下,如果未找

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

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

有什么理由这样做而不是
消息。get('title',None)

这将保证dict中的任何错误值(例如
None
'
0
False
[]
,…)将变为
None
。i、 如果你有

d = {'title': False}
然后

这是否有一个实际的用例是有争议的,但肯定有一个微妙的区别


还请注意,您可以将其简化为:

d.get('title') or None
由于
d.get
默认情况下,如果未找到元素,则返回
None

这是有原因的

例如,
message.get('title',None)或None
可能返回空字符串。Python中空字符串的布尔值为
False
,因此将返回
None

这也适用于从计算结果为
False
dict
返回的任何其他值<代码>无将被返回


注意:但是,该代码最好写成
message.get('title')或None
,因为默认情况下
dict.get
返回
None
(第二个参数)。

如果您得到消息,并且它是一个false-y值,则会将其更改为None

比如说

message = {'title' : ''}

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

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

.get(…,None)
中的
None
实际上是多余的。不,它不会返回空字符串。fwiw,一个实际的用例是
os.environ.get('VAR')或“some_default'
,这样
$VAR=python…
将等效于not set。
message = {'title' : ''}

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

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