我有一个关于成语和可读性的问题,对于这种特殊情况,似乎存在Python哲学的冲突:
我想从字典B构建字典A。如果B中不存在特定键,则什么也不做,继续。
哪种方法更好?
try: A["blah"] = B["blah"] except KeyError: pass
要么
if "blah" in B: A["blah"] = B["blah"]
“做并请求宽恕”与“简单明了”。
哪个更好?为什么?
异常不是有条件的。
条件版本更清晰。这很自然:这是直接的流控制,这是条件设计的目的,而不是异常。
在循环中进行这些查找时,异常版本主要用作优化:对于某些算法,它允许从内部循环中消除测试。这里没有那个好处。它有一个小的优势,它避免了重复说"blah"两次,但是如果您要进行很多次操作,您可能应该仍然具有帮助move_key功能。
"blah"
move_key
通常,除非您有特殊原因,否则我强烈建议您默认使用条件版本。有条件的是执行此操作的 明显 方法,通常强烈建议您优先使用一种解决方案。