Как написать пустой блок с отступом в Python?
Среда выполнения продолжает говорить мне:
ожидаемый блок с отступом
Но я не хочу ничего записывать внутри моего блока except, я просто хочу, чтобы он перехватил и проглотил исключение.
Смотрите также: Как использовать оператор "pass"?
Переведено автоматически
Ответ 1
Просто напишите
pass
как в
try: # Do something illegal. ...except: # Pretend nothing happened. pass
РЕДАКТИРОВАТЬ: @swillden поднимает хороший момент, а именно, это ужасная идея в целом. Вы должны, по крайней мере, сказать
except TypeError, DivideByZeroError:
или любые другие ошибки, которые вы хотите обработать. В противном случае вы можете замаскировать более серьезные проблемы.
Ответ 2
Для тех, кому очень неясно, зачем вам это нужно. Вот пример, когда я изначально подумал, что пустой блок был бы хорошей идеей.:
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__))
Ответ 3
Я никогда не делал этого в более постоянном коде, но я часто делаю это в качестве заполнителя
if some_expression: Trueelse: do_something(blah)
Простое добавление True остановит ошибку. Не уверен, что в этом есть что-то плохое.