Python 具有默认值的dict.get的可读性

Python 具有默认值的dict.get的可读性,python,dictionary,readability,Python,Dictionary,Readability,以下是通过键从字典获取值的传统方法,其中默认值作为备用值提供: value = dictionary.get(key, default) 然而,我想到了在get中省略default值,并使用或-技巧: value = dictionary.get(key) or default 一般来说,后一种方法更具可读性吗?它不是更具可读性(它们基本上是一样的),而且更可能是细微的错误 如果字典[key]是任何错误值(无、空字符串、列表、元组等,或任何零值数字),后者生成默认值get只会生成默认值。关于

以下是通过
字典
获取
的传统方法,其中
默认值作为备用值提供:

value = dictionary.get(key, default)
然而,我想到了在
get
中省略
default
值,并使用
-技巧:

value = dictionary.get(key) or default
一般来说,后一种方法更具可读性吗?

它不是更具可读性(它们基本上是一样的),而且更可能是细微的错误


如果
字典[key]
是任何错误值(
、空字符串、
列表
元组
等,或任何零值数字),后者生成
默认值
<如果
键实际上不存在,code>get
只会生成
默认值

关于可读性,我认为它们是相同的。然而,作为惯例,我们习惯于
some dict.get(“someKey”,None)
运行时差异似乎也很小

python-mtimeit'{}.get(“key”,“someDefault”)'
>>>2000000个环路,最佳值为5:144纳秒/环路
python-m timeit'{}.get(“key”)或“someDefault”'
>>>2000000个回路,最佳5个:每个回路147纳秒
当密钥确实存在时,我们会看到类似的结果

python-m timeit'{“key”:“value”}.get(“key”,“someDefault”)'
>>>2000000圈,最佳5圈:每圈183纳秒
python-m timeit'{“key”:“value”}.get(“key”)或“someDefault”'
>>>2000000圈,最佳5圈:每圈187纳秒

哦,不,那会很乱。感谢您提醒我们注意这样一个小错误。
.get()
如果已经有一个参数,则默认情况下会隐式返回
None
。在这种情况下,您根本不需要传递它,并且添加
或None
,即使它不会导致细微的逻辑错误(所有值都假定为truthy),也只是无缘无故地将
None
替换为
None
。@ShadowRanger应该指定在OP的情况下,None将是默认值。