我有兴趣了解以下行为背后的基本原理:
在红宝石中,
irb(main):003:0> dic = {:a => 1, :b => 2}
=> {:a=>1, :b=>2}
irb(main):004:0> dic[:c]
=> nil
在 Javascript 中:
> var dic = {a: 1, b: 2};
undefined
> dic['c']
undefined
Clojure:
user=> (def dic {:a 1 :b 2})
#'user/dic
user=> (:c dic)
nil
在 Python 中:
>>> dic = {'a': 1, 'b': 2}
>>> dic['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
我想知道为什么 Python 的(默认)行为是引发异常,而不是nil
像上面列出的其他语言一样返回某种形式。我没有在设计常见问题解答中看到答案。(我想一个等效的问题是问为什么其他语言会做他们所做的事情,但 Python 在这方面似乎是个怪人。)