Как работает input() в python?

Интересный момент в работе input()

Добрый день! Предыстория: Изучал java и наткнулся на интересный момент, что можно задать значение элемента массива при помощи следующей команды

array[i] = console.nextInt();

Решил проверить в Python и там тоже всё работает, но неожиданно выявилась интересная особенность: ввод нового элемента массива идёт перед вводом места этого самого массива.
Код выглядит так:

m = [1,2,3,4,5]
m[int(input("place "))] = int(input("Value "))
print(m) 

Вопрос: почему так происходит и как работает input() в Python?


Ответы (1 шт):

Автор решения: Alexey Loskutov

Дело не в input(), а в порядке вычисления выражений в питоне:

Python evaluates expressions from left to right. Notice that while evaluating an assignment, the right-hand side is evaluated before the left-hand side.

Python docs: Evaluation order

Таким образом, input("Value ") выполняется сначала, а потом уже input("place ").

Благодаря этому, например, можно обменять значения переменных через

a,b = b,a

Сначала правая часть создает set(b, a), потом выполняется присваивание.

→ Ссылка