一尘不染

`if key in dict` vs.`try / except`-哪个更易读?

python

我有一个关于成语和可读性的问题,对于这种特殊情况,似乎存在Python哲学的冲突:

我想从字典B构建字典A。如果B中不存在特定键,则什么也不做,继续。

哪种方法更好?

try:
    A["blah"] = B["blah"]
except KeyError:
    pass

要么

if "blah" in B:
    A["blah"] = B["blah"]

“做并请求宽恕”与“简单明了”。

哪个更好?为什么?


阅读 158

收藏
2020-12-20

共1个答案

一尘不染

异常不是有条件的。

条件版本更清晰。这很自然:这是直接的流控制,这是条件设计的目的,而不是异常。

在循环中进行这些查找时,异常版本主要用作优化:对于某些算法,它允许从内部循环中消除测试。这里没有那个好处。它有一个小的优势,它避免了重复说"blah"两次,但是如果您要进行很多次操作,您可能应该仍然具有帮助move_key功能。

通常,除非您有特殊原因,否则我强烈建议您默认使用条件版本。有条件的是执行此操作的 明显 方法,通常强烈建议您优先使用一种解决方案。

2020-12-20