Если я попробую следующий код (в Python 3.2.2),
def f():
raise Exception
x = f()
тогда оказывается, что x
нетронутый - он либо остается undefined, либо сохраняет любое значение, которое было ранее. Является ли это поведение гарантированным, когда правая сторона задания вызывает исключение? Я понимаю, что это очень простой вопрос, но я не могу найти много информации о том, как работает именно назначение. В более общем плане, всегда ли оценивается вся правая сторона, прежде чем что-либо, связанное с назначением? Это даже верно при использовании setattr
, присваивании элементу списка или использовании распаковки (например, x, y = y, f()
)?