【发布时间】:2014-08-22 04:20:28
【问题描述】:
我尝试了一些不同的单行解决方案来解决仅在变量不存在时才定义变量的问题,并注意到 Python 处理字典和列表/元组的方式不同。这些错误似乎与我完全相似,所以我很困惑为什么会有差异。
字典键错误处理
existing_dict = {"spam": 1, "eggs": 2}
existing_dict["foo"] = existing_dict["foo"] if not KeyError else 3
返回{"spam": 1, "eggs": 2, "foo": 3}
请注意,我在左侧和右侧都引用了一个不存在的键; Python 在它出现的任何一个子句中处理 KeyError 都没有问题。
列表索引错误处理(也适用于元组)
existing_list = ["spam","eggs"]
existing_list[2] = existing_list[2] if not IndexError else ["foo"]
返回IndexError: list assignment index out of range
解决这个特定错误 (answer here) 一点也不难,但我很好奇为什么这些情况会有所不同。在这两种情况下,似乎在两个受让人/分配子句中都存在错误,并带有一个“如果不是”错误捕获。
【问题讨论】: