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将是默认值。