НОЧУ ДПО "Национальный открытый университет "ИНТУИТ"
Опубликован: 24.01.2021 | Доступ: свободный | Студентов: 1238 / 22 | Длительность: 03:57:00
Лекция 10:

Оператор присваивания

< Лекция 1 || Лекция 10: 123

Смотреть на youtube

Проект для лекции Lecture3.rar.

Прежде чем перейти к рассмотрению операторов языка Python, напомним особенности Python, связанные с объектами и их именами.

Объекты и имена

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

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

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

Модули и операторы

Программа на Python состоит из модулей, каждый из которых может быть запущен на выполнение. Модуль содержит операторы, выполняемые последовательно в порядке следования текста модуля. В стиле Python каждая строка текста содержит один простой оператор - присваивания и вызова. Сложные операторы - цикла и выбора занимают несколько строк. Заголовок этих операторов занимает отдельную строку, заканчивающуюся двоеточием.

Стремясь упростить синтаксическую структуру записи операторов, при записи операторов опускаются привычные скобки, отмечающие начало и конец булевских выражений в записи if и while, скобки, задающие начало и конец составного оператора. Структура сложных операторов формируется за счет отступов в записи сложного оператора. Подряд идущие операторы, имеющие один и тот же отступ, представляют один составной оператор. Изменение отступа означает переход на другой уровень.

Подробности особенностей синтаксиса в записи операторов Python рассмотрим при описании операторов.

Оператор присваивания в языке Python

Оператор присваивания - один из основных операторов языка. Синтаксис и семантика этого оператора в его основной форме просты, интуитивно понятны, соответствуют классике.

Основная форма оператора присваивания синтаксически выглядит так:

<имя> = <выражение>

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

Присваивание в Python - это ссылочное присваивание.

Пример нескольких простых присваиваний:

def test1():
    #простое присваивание: <имя> = <выражение>
    j = 7
    d = 7.5
    k = ('one', 'two')
    p = [1, [3, 5]]
    s = {2:'two', 'two':2 }
    print ('j = ', j); print ('d = ', d); print ('k = ', k);
    print ('p = ', p); print ('s = ', s);
    k1 = k[1]
    p[1] = [3, 5, 7]
    s1 = s[2]
    print ("k1 = ", k1); print ("p = ", p); print ("s1 = ", s1)
test1()

Результаты выполнения:


< Лекция 1 || Лекция 10: 123
Елена Лаптева
Елена Лаптева

Думаю. что не смогу его закончить. Хотелось предупредить других - не тратьте зря время, ищите другой курс.

Михаил Сидоров
Михаил Сидоров

Если S - последовательность, то срез задается как S(i : j) и содержит j - i элементов,

а в примере используютс другие скобки - 

NL[1:3] = ["решили", "не", "искать"]

или это не срез, тогда, что это?