如何在Python中写一个空的缩进块?
我有一些代码如下:
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:
或者你想处理的其他类型的错误。否则,你可能会掩盖更大的问题。