我并不是在征求个人对这一哲学的“宗教”意见,而是一些更为技术性的东西。
我知道这个短语是检查你的代码是否是“ pythonic”的几个试金石之一。但对我来说,pythonic 意味着干净、简单和直观,而不是为糟糕的编码加载异常处理程序。
实际的例子,我定义了一个类:
class foo(object):
bar = None
def __init__(self):
# a million lines of code
self.bar = "Spike is my favorite vampire."
# a million more lines of code
现在,从程序背景出发,在另一个函数中,我想这样做:
if foo.bar:
# do stuff
如果我没有耐心,并且 没有执行初始 foo = Nothing,我将得到一个属性异常。所以,“请求宽恕而不是允许”建议我应该这样做?
try:
if foo.bar:
# do stuff
except:
# this runs because my other code was sloppy?
为什么在 try 块中添加额外的逻辑对我来说更好,这样我就可以保留我的类定义 更模棱两可?为什么不在最初定义所有内容,因此显式地定义 给予许可?
(不要因为使用 try/but 块而责备我... ... 我在任何地方都使用它们。我只是不认为用它们来捕捉我自己的错误是正确的,因为我不是一个彻底的程序员。)
还是说,我完全误解了“请求宽恕”的咒语?