Проблема связана с различием между оператором и выражением. Этот вопрос имеет превосходный ответ, который объясняет разницу , ключевой момент:
Выражение: Что-то, что оценивает значение. Пример: 1 + 2 / x
Заявление: Строка кода, которая что-то делает. Пример: GOTO 100
Оператору print
необходимо значение для распечатки. Таким образом, в скобках вы помещаете выражение, которое дает значение для печати. Так что это может быть что-то простое, например x
, или более сложное выражение, например "The value is %d" % x
.
x += 5
- это оператор, который добавляет 5 к x
, но он не возвращает значение для print
.
Так что в Python нельзя сказать
print(x += 5)
больше, чем вы могли бы сказать:
y = x += 5
Однако в некоторых других языках операторы также являются выражениями, т. Е. Они что-то делают и возвращают значение. Например, это вы можете сделать это в Perl:
$x = 5;
$y = $x += 5;
print $y;
Хотели бы вы сделать это - другой вопрос.
Одним из преимуществ обеспечения различия между утверждениями и выражениями в Python является то, что вы избегаете распространенных ошибок, когда вместо чего-то вроде:
if (myvar == 1) {
//do things
}
у вас есть следующее по ошибке:
if (myvar = 1) {
//do things
}
Во втором случае C установит myvar
в 1, но Python завершится неудачно с ошибкой компиляции, потому что у вас есть оператор, в котором должно быть выражение.