Что означает — SyntaxError: can’t assign to literal

668 просмотра
0
0 Комментариев

Когда я пытаюсь выполнить этот код, у меня вылезает ошибка

«can’t assign to literal»

 1 = 'Нет - ****** ответ!'

Вот. Может, не знаю, надо переменную ставить не как число? но это вряд ли, потому что Питон выделяет красным именно пустое пространство от символа «‘» и до конца того, что я вижу справа. Что за фигня, спрашивается?


Добавить комментарий

3 Answers

Python Опубликовано 18.12.2018
0

Вы пытаетесь числу задать какое то значение но это в априоре невозможно! невозможно сохранити какуюто информацию в число, для этого создаются переменные в которых хранится путь к памяти в которой хранится это значение.

Вы должны число 1 сделать переменной!

Добавить комментарий
0

Имена в Питоне не могут на цифры начинаться, поэтому 1 здесь интерпретируется как число (константа):

$ python -mtokenize <<<'1 = ".."'
1,0-1,1:            NUMBER         '1'
1,2-1,3:            OP             '='
1,4-1,8:            STRING         '".."'
1,8-1,9:            NEWLINE        '\n'
2,0-2,0:            ENDMARKER      ''

Поменять, что 1 означает в исходном коде таким способом нельзя. Поэтому SyntaxError возникает. На старых версиях Питона, можно было изменить к каким объектам True, False имена прикреплены (в современных версиях это ключевые слова. Всегда: True == 1 и False == 0). В образовательных целях, можно попробовать поменять объект int, соответствующий константе, или даже сам код трансформировать.

Оператор присваивания достаточно интересный в Питоне. Попробуйте представить как [] = [] работает (или в качестве бонуса: (a, b) = a[b] = {}, 5). Экспериментировать с казалось бы бессмысленными конструкциями полезно, чтобы границы понимания, реализаций обнаружить (буквально подобный код не стоит использовать).

Добавить комментарий
0

Это можно сделать так:

>>> globals()[1] = 'Нет - ****** ответ!'
>>> print(globals()[1])
Нет - ****** ответ!

Или так:

>>> locals()[1] = 'Нет - ****** ответ!'
>>> print(locals()[1])
Нет - ****** ответ!

Но не очень понятно, зачем.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up