D = {'a':1}
D.get('a', print('hah'))
尽管成功返回了1,但我也得到了“哈”。为什么?似乎python需要评估如果'a'不存在时应该返回的内容,并且以某种方式被欺骗了,因为它期望的只是一个变量。
另外,是否有一种聪明的方法来获得预期的行为(不执行打印功能),除此之外:
D.get('a', print('hah') if not D.get('a') else None)
请注意,这里的print()是MWE。我真的需要使用一个返回列表的函数。
当python调用一个函数时,首先会评估所有参数,因为python不知道是否需要一个参数。
如果您不希望评估,则必须使用if
或例外:
D = {'a': 1}
try:
a = D['a']
except KeyError:
a = print('hah')
有两次查找,因此不太优雅:
a = D['a'] if 'a' in D else print('hah')
或者,如果可以保证,字典中的值永远不会求和False
(没有空字符串,空元组,0、0.0,...,请谨慎!):
a = D.get('a') or print('hah')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句