Страницы

четверг, 16 апреля 2015 г.

Мне кажется это одна из самых важных вещей которую нужно помнить в Python это Присвоение



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


  Цель слева может быть именем или компонентом объекта, а объектом справа может быть произвольное выражение, которое в результате дает объект.

 В большинстве случаев присваивание выполняется достаточно просто, однако оно обладает следующими особенностями, которые  следует иметь в виду:



• Инструкция присваивания создает ссылку на объект.
    В языке Python инструкция присваивания сохраняет ссылки на объекты в переменных или в элементах структур данных. Они всегда создают ссылки на объекты и никогда не создают копии объектов.


  Вследствие этого переменные в языке Python больше напоминают указатели, чем области хранения данных.






Переменные создаются при первом присваивании. 

 Интерпретатор Python создает переменные, когда им впервые присваиваются значения (то есть ссылки на объекты), благодаря этому отсутствует необходимость предварительного объявления переменных. Иногда (но не всегда) в результате операции присваивания создаются элементы структур данных (например, элементы в словарях, некоторые атрибуты объектов). После выполнения операции присваивания всякий раз, когда имя переменной будет встречено  в выражении, оно замещается объектом, на который ссылается эта переменная.


 • Прежде чем переменную можно будет использовать, ей должно быть присвоено значение.

    Нельзя использовать переменную, которой еще не было присвоено значение. В этом случае интерпретатор возбуждает исключение вместо того, чтобы вернуть какое-либо значение по умолчанию, – если бы он возвращал значение по умолчанию, это только осложнило бы поиск опе- чаток в программном коде.

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

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