» =» вызывает ошибку синтаксиса в Python

#python #syntax-error #augmented-assignment

#python #синтаксическая ошибка #расширенное присваивание

Вопрос:

 n = 1
p = 4
print n  = p
  

дает мне:

 File "p7.py", line 17

print n  = p

SyntaxError: invalid syntax
  

Как можно устранить эту проблему?

Комментарии:

1. разобрался с этим … в некоторой степени. удаление инструкции print заставляет ее работать. Я не понимаю правила здесь, почему оно нарушается при печати, но я продолжу искать.

2. «Я не понимаю правила здесь»? Где вы видели подобный код? Какой учебник вы используете? Где вы изучаете Python? Этот пример сильно ошибочен. Где вы видели подобный код?

Ответ №1:

n = p это оператор в Python, а не выражение, которое возвращает значение, которое вы могли бы напечатать. Это отличается от пары других языков, например Ruby, где все является выражением.

Вам нужно сделать

 n  = p
print n
  

Ответ №2:

Присваивание, включая «расширенное» присваивание ( x op= expr как сокращенное для x = x op expr ), является оператором, а не выражением. Таким образом, это не приводит к значению. Вы не можете напечатать результат чего-либо, что ни к чему не приводит, но это то, что вы говорите Python сделать: «Вычислите n = p , затем распечатайте результат этого».

Если вы хотите изменить n и распечатать новое n , сделайте это в двух строках. Если вы просто хотите напечатать сумму n и p без каких-либо изменений, используйте вместо = .

Ответ №3:

Вам нужно будет разбить его на отдельные строки:

 n = 1
p = 4
n  = p
print n
  

Ответ №4:

n = p равно n = n p . Это отдельная инструкция, и ее нельзя распечатать. Вы, вероятно, имели в виду print n p .

Редактировать:

разобрался с этим … в некоторой степени. удаление инструкции print заставляет ее работать. Я не понимаю правила здесь, почему оно нарушается при печати, но я продолжу искать

Я бы серьезно посоветовал взять книгу о Python и извлечь из нее уроки. Очевидно, что вы (не в качестве оскорбления, просто информирую вас) понятия не имеете, что делаете.

Комментарии:

1. Придирки: это не совсем эквивалентно. Объекты могут перегружать его для внесения изменений на месте (например, списки).

2. делнан: Верно, но оффтопик для этой проблемы. Это также сбило бы с толку спрашивающего, видя, что его уровень квалификации приблизительно соответствует вопросу.

Ответ №5:

= это оператор. Поместите ее в отдельную строку.

Ответ №6:

Хотя = в целом Python является легальным, на данный момент он синтаксически запрещен, поэтому попробуйте:

 n = 1
p = 4
n  = p
print n