考虑以下代码:
>>> def default_answer():
... print "Default was required!"
... return 100
...
>>> g = { 'name': 'Jordan', 'age': 35 }
>>> result = g.get('age', default_answer())
Default was required!
>>> result = g.pop('age', default_answer())
Default was required!
请注意,无论是否g
包含预期的键,都会调用 default_answer。这在编程上是有意义的,但如果default_answer
计算成本很高,这将是一件麻烦事(运行大量代码来创建一个将被丢弃的值)。
我能想到写这个而不总是打电话的唯一方法default_answer
是:
result = g.pop('age', False) or default_answer()
这是最好的方法吗?
(请注意,我知道default_answer
用惰性评估替换对象也可以解决这个问题的一部分,但这超出了这个问题的范围)。