为什么当密钥不存在时我没有得到密钥错误?

Why didn't I get a key error when the key does not exist?

假设我有一个空字典。

test_dict = {}

我原来的代码是这样的

x = input()
try:
    info = test_dict.get(x)

except:
    print("Key Does Not Exist!")

但它不会在我的控制台中引发 KeyError,而是 returns None。我非常确定我测试过它并且它可以工作,但是在我将我的 Spyder 从 4.1.2 更新到 4.1.5 之后,它不再工作了,我必须将我的代码更改为:

x = input()
if x in test_dict.keys():
    info = test_dict.get(x)

else:
    print("Key Does Not Exist!")

为什么它 return None 而不是 KeyError?

如果您不理解某些行为,help 通常很有用。在这种情况下你可以这样做:

test_dict = {}
help(test_dict.get)

意识到:

Help on built-in function get:

get(key, default=None, /) method of builtins.dict instance
    Return the value for key if key is in the dictionary, else default.