Неужели не нашлось русских специалистов, чтобы записать курс по пайтону ? Да, можно включить переводчик и слушать с переводом, но это что? Это кто-то считает хорошим и понятным курсом для начинающих? |
Оператор присваивания
Смотреть на 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()
Результаты выполнения: