2016-12-22 9 views

ответ

11

PyCharm является правильным. Если open() сбой, возникает исключение, а не достигнуто ниreturn.

with не защищает вас от исключения в выражении, которое создает менеджер контекста. Ожидается, что выражение после with создаст менеджер контекста, после чего будет сохранен метод __exit__ и вызывается метод __enter__. Единственным результатом здесь является то, что либо менеджер контекста успешно создается и вводится, либо возникает исключение. Ни в коем случае with проглотит исключение на этом этапе и тихо пропустит блок.