Сообщить об ошибке.

Обычный способ присваивания значений

Обычный способ простого присваивания значения переменной имеет следующий синтаксис:

name = expr
object.attr_name = expr
iterator[x] = expr
iterator[start:stop:step] = expr

Когда выполняется операция присваивания значения, Python вычисляет выражение expr, а затем связывает полученное значение с целевой ссылкой. Это связывание не зависит от типа значения. Python не проводит строгого различия между вызываемыми и невызываемыми объектами, как это принято делать в некоторых языках программирования, поэтому допускается связывать с переменными функции, методы, типы и другие вызываемые объекты точно так же, как числа, строки, списки и т.д. Это обусловлено тем, что функции и им подобные объекты являются объектами первого класса.

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

Идентификатор:
Это имя переменной. Присваивание значения идентификатору связывает переменную с этим именем.

Ссылка на атрибут:
Записывается с использованием точечной нотации вида object.attr_name, где object - объект, а attr_name - идентификатор, который служит именем атрибута объекта. Присваивание значения ссылке на атрибут запрашивает у объекта связывание атрибута.

Индексированный элемент:
Записывается с использованием скобочной нотации в виде iterator[x], где iterator и x - произвольные выражения. Присваивание значенияпо индексу запрашивает у контейнера объект связывания его элемента, указанного с помощью значения выражения, которое называют индексом или ключом элемента контейнера.

Срез:
Записывается в виде iterator[start:stop] или iterator[start:stop:step], где iterator, start, stop, step - произвольные выражения. Каждое из выражений начало, конец и шаг является необязательным. Присваивание значения срезу запрашивает у контейнера объект связывания или открепления некоторых из его элементов. Присваивание значения срезу вида iterator[start:stop:step] эквивалентно присваиванию значения с помощью индексирования вида iterator[sliсе(start,stop,step)].

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