如何在Python中写一个空的缩进块?

50 投票
3 回答
29912 浏览
提问于 2025-04-15 14:52

我有一些代码如下:

try:
    do_the_first_part()
except SomeError:
do_the_next_part()

我遇到了一个错误,提示“期望有一个缩进的代码块”——但是我不想在我的 except 块里面写任何东西,我只是想让它捕获并忽略这个异常。我该如何在Python中做到这一点呢?


另见: 如何使用“pass”语句?

3 个回答

-1

我以前从来没有在正式的代码中这样做过,但我经常把它当作一个临时的占位符。

if some_expression:
  True
else:
  do_something(blah)

在这里放一个 True 就可以解决错误。我不太确定这样做是否有什么不好的地方。

0

对于那些不太明白为什么要这样做的人,这里有一个例子。我最开始觉得留一个空的代码块是个好主意:

def set_debug_dir(self, debug_dir=None):
    if debug_dir is None:
        debug_dir = self.__debug_dir
    elif isinstance(debug_dir, (Path, str)):
        debug_dir = debug_dir # this is my null operation
    elif isinstance(debug_dir, list):
        debug_dir = functools.reduce(os.path.join, debug_dir)
    else:
        raise TypeError('Unexpected type for debug_dir: {}'.format(type(debug_dir).__name__))

但是如果把这个语句重新整理一下,会更清楚明了:

def set_debug_dir(self, debug_dir=None):
    if debug_dir is None:
        debug_dir = self.__debug_dir
    elif isinstance(debug_dir, list):
        debug_dir = functools.reduce(os.path.join, debug_dir)
    elif not isinstance(debug_dir, (Path, str)):
        raise TypeError('Unexpected type for debug_dir: {}'.format(type(debug_dir).__name__))
111

只需要写

pass

就像这样

try:
    # Do something illegal.
    ...
except:
    # Pretend nothing happened.
    pass

编辑:@swillden 提出了一个很好的观点,也就是说,这通常是个糟糕的主意。你至少应该说

except TypeError, DivideByZeroError:

或者你想处理的其他类型的错误。否则,你可能会掩盖更大的问题。

撰写回答