如何在Python中编写空缩进块?

问题描述 投票:0回答:3

我有一些代码,例如:

try:
    do_the_first_part()
except SomeError:
do_the_next_part()

我收到一个错误,提示“需要一个缩进块” - 但我不想在我的

except
块中写入任何内容,我只是希望它捕获并吞掉异常。我怎样才能在Python中做到这一点?


另请参阅: 如何使用“pass”语句?

python syntax try-catch indentation
3个回答
111
投票

就写吧

pass

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

编辑:@swillden 提出了一个很好的观点,即,总的来说,这是一个糟糕的想法。你至少应该说

except TypeError, DivideByZeroError:

或者您想要处理的任何类型的错误。否则你可能会掩盖更大的问题。


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__))

-1
投票

我从未在更永久的代码中这样做过,但我经常将其作为占位符

if some_expression:
  True
else:
  do_something(blah)

只需在其中粘贴 True 即可停止错误。不知道这是否有什么不好。

© www.soinside.com 2019 - 2024. All rights reserved.