DJG*_*DJG 5 python programming-languages
我有兴趣了解以下行为背后的基本原理:
在Ruby中,
irb(main):003:0> dic = {:a => 1, :b => 2}
=> {:a=>1, :b=>2}
irb(main):004:0> dic[:c]
=> nil
Run Code Online (Sandbox Code Playgroud)
在Javascript中:
> var dic = {a: 1, b: 2};
undefined
> dic['c']
undefined
Run Code Online (Sandbox Code Playgroud)
Clojure的:
user=> (def dic {:a 1 :b 2})
#'user/dic
user=> (:c dic)
nil
Run Code Online (Sandbox Code Playgroud)
在Python中:
>>> dic = {'a': 1, 'b': 2}
>>> dic['c']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
Run Code Online (Sandbox Code Playgroud)
我想知道为什么Python的(默认)行为是引发异常,而不是nil像上面列出的其他语言那样返回某种形式.我没有在设计常见问题中看到答案.(我想一个等价的问题就是问为什么其他语言会做他们做的事情,但Python在这方面看起来似乎很奇怪.)
来自Python的Zen(import this):
Errors should never pass silently.
Unless explicitly silenced.
Run Code Online (Sandbox Code Playgroud)
意思是,未找到的密钥被视为错误,除非您明确编写代码,例如通过捕获KeyError或使用该dict.get(key, default)方法.
Python被明确地设计为在这个和(大多数)其他方面非常明确.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |