Вопрос-Ответ

How to write an empty indented block in Python?

Как написать пустой блок с отступом в 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:
True
else:
do_something(blah)

Простое добавление True остановит ошибку. Не уверен, что в этом есть что-то плохое.

python