Проблема в том, что левая сторона оператора присваивания должна иметь значение lvalue , то есть то, что, как знает компилятор, имеет адрес памяти, например переменную. То же самое в других языках программирования. Возвращаемое значение функции: rvalue или pure value.
Это другие незаконные задания:
f() = 1
2 = 1
None = 0
[1,2] = []
Обратите внимание, что следующие синтаксически правильны, потому что компилятор знает, как вычислить адрес для ячейки памяти, которая будет назначена:
f().a = None
[1,2][0] = 0