我正在尝试一些不同的单行解决方案来解决仅在变量不存在时才定义变量的问题,并注意到 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
解决这个特定错误一点也不难(在此处回答),但我很好奇为什么这些情况会有所不同。在这两种情况下,两个受让人/分配子句似乎都存在错误,并带有一个“如果不是”错误捕获。