x.get("key") 中的 Python KeyError

问题描述 投票:0回答:1

这是我在 python 日志文件中看到的一个奇怪的错误。

import traceback

mat = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]

def fun(a, b, c):
    if c is None:
        return a + b
    else:
        return a + b + c

try:
    for x in mat:
        x["d"] = fun(x["a"], x["b"], x.get("c"))
except BaseException as e:
    emsg = ''.join(traceback.format_exception(None, e, e.__traceback__))
    print(emsg)

#py> KeyError: "c"

我无法重现该错误,据我了解,由于我正在使用

KeyError
,因此不可能获得
"c"
x.get
。因此,我对这个消息感到非常困惑。有谁知道这是 CPython 中的罕见错误还是我忽略了某些东西?

cpython
1个回答
0
投票

仔细想想,我猜答案就在

.pyc
文件中。我之前更新了
.py
文件以将
x["c"]
替换为
x.get("c")
,如果现在由于某种原因,
.pyc
的覆盖被另一个进程阻止,并且
.pyc
仅引用
.py 中的行号
文件进行回溯(听起来很现实),这将给出我观察到的行为。

感谢您的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.