Назначение не является выражением (другие указали на это). Отсюда синтаксическая ошибка.
Относительно вашего вопроса относительно порядка оценки :
В выражениях if-else (!) Сначала оценивается операнд условия, затем оценивается либо тогда-операнд (крайний левый), либо операнд else (крайний правый). Другой операнд не оценивается.
В выражениях или операнды вычисляются от крайнего левого до крайнего правого (a or b or c or d or ...
), но только до тех пор, пока не будет найден один, булево значение которого равно True. Остальные выражения не оценены.
В выражениях и операнды оцениваются от крайнего левого до крайнего правого (a and b and c and d and ...
), но только до тех пор, пока не будет найден один, булево значение которого равно False. Остальные выражения не оценены.
Внутренние выражения оцениваются перед внешними выражениями (конечно): third(second(first()))
В во всех остальных случаях (a() + b()
, f(g(), h())
, a[b[c]] = d() + e
) порядок определяется как , указанный . Обычно это слева направо, за исключением присвоения (где оно находится справа перед левым).