我不是在要求关于这种哲学的个人“宗教”观点,而是更多技术性的观点。
我知道这句话是几个试金石之一,看看你的代码是否是“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 = None,我会得到一个属性异常。所以,“请求宽恕而不是许可”建议我应该这样做吗?
try:
if foo.bar:
# do stuff
except:
# this runs because my other code was sloppy?
为什么我最好在 try 块中添加额外的逻辑,这样我就可以让我的类定义更加模糊?为什么不首先定义所有内容,然后明确授予权限?
(不要因为使用 try/except 块而责备我……我在任何地方都使用它们。我只是不认为使用它们来捕获我自己的错误是正确的,因为我不是一个彻底的程序员。)
或者……我完全误解了“请求原谅”的咒语吗?