|
Укус питона. Книга на вашем родном языке Переводы 7 1 Доступные переводы переводы 7 3 Предисловие 16 1
>>> ' {0:_^11} ' format( 'hello' ) '___hello___' >>> # по ключевым словам: >>> ' {name} написал {book} ' format(name = 'Swaroop' , book = 'A Byte of Python' ) 'Swaroop написал A Byte of Детально такие обозначения форматов описаны в Предложении по расширению Python PEP 3101 7.5 Переменные Использование одних лишь литеральных констант может скоро наскучить – нам ведь нужен способ хранения любой информации и манипулирования ею. Вот здесь на сцену выходят переменные. Слово переменные говорит само за себя – их значение может меняться, а значит, вы можете хранить в переменной всё, что угодно. Переменные – это просто области памяти компьютера, в которых вы храните некоторую информацию. В отличие от констант, к такой информации нужно каким-то образом получать доступ, поэтому переменным даются имена. Переменные A Byte of Python (Russian), Версия 2.02 7.6 Имена идентификаторов Переменные – это частный случай идентификаторов. Идентификаторы – это имена, присвоенные чему-то для его обозначения. При выборе имён для идентификаторов необходимо соблюдать следующие правила Первым символом идентификатора должна быть буква из алфавита (символ ASCII в верхнем или нижнем регистре, или символа также символ подчёркивания («_»). • Остальная часть идентификатора может состоять из букв (символы ASCII в верхнем или нижнем регистре, а также символы Unicode), знаков подчёркивания («_») или цифр (0-9). • Имена идентификаторов чувствительны к регистру. Например и myName – это не одно и тоже. Обратите внимание на « n » в нижнем регистре в первом случае ив верхнем во втором Примеры допустимых имён идентификаторов: i , __my_name , name_23 , a1b2_c3 и любые_символы_utf8_δξѪђёўЩӆΞέά • Примеры недопустимых имён идентификаторов: 2things , здесь есть пробелы , my-name , >a1b2_c3 и "это_в_кавычках" 7.7 Типы данных Переменные могут хранить значения разных типов, называемых типами данных. Основными типами являются числа и строки, о которых мы уже говорили. В дальнейших главах мы увидим, как создавать свои собственные типы при помощи классов7.8 Объекты Помните, Python рассматривает всё, что есть в программе, как объекты. Имеется ввиду, в самом общем смысле. Вместо того, чтобы говорить нечто, мы говорим « объект». Замечание для программистов в объектно-ориентированном стиле строго объектно ориентирован в том смысле, что объектом является всё, включая числа, строки и функции. Сейчас мы увидим, как использовать переменные наряду с константами. Сохраните следующий пример и запустите программу. Имена идентификаторов A Byte of Python (Russian), Версия Как писать программы на Впредь стандартная процедура сохранения и запуска программы на Python будет выглядеть так. Откройте ваш любимый редактор, например Komodo Edit. 2. Введите текст программы из примера. Сохраните его в файл, указав его имя в комментарии. Я следую правилу сохранять все программы нас расширением. Запустите интерпретатор командой python3 program.py . Кроме того, вы можете сделать программу исполнимой, как объяснялось ранее Пример Использование переменных и констант Имя файла : Это многострочная строка. Это вторая её строчка.''' print (s) Вывод:$ python var.py 5 Это многострочная строка. Это вторая её строчка. Как это работает:Вот как эта программа работает. Сперва мы присваиваем значение константы переменной i , используя оператор присваивания ( = ). Эта строка называется предложением и указывает, что должно быть произведено некоторое действие, ив данном случае мы связываем имя переменной со значением. Затем мы печатаем значение i , используя функцию print , которая просто печатает значение переменной на экране. Объекты A Byte of Python (Russian), Версия Далее мы добавляем 1 к значению, хранящемуся в и сохраняем его там. После этого мы печатаем его и получаем значение, что неудивительно. Аналогичным образом мы присваиваем строковую константу переменной после чего печатаем её. Замечание для программистов на статических языках программированияПеременные используются простым присваиванием им значений. Никакого предварительного объявления или определения типа данных не требуется/применяется. 7.9 Логические и физические строки Физическая строка – это то, что вы видите, когда набираете программу. Логическая строка это то, что Python видит как единое предложение. Python неявно предполагает, что каждой физической строке соответствует логическая строка. Примером логической строки может служить предложение Привет, Мир!') – если оно на одной строке (как вы видите это в редакторе, то эта строка также соответствует физической строке неявно стимулирует использование по одному предложению на строку, что облегчает чтение кода. Чтобы записать более одной логической строки на одной физической строке, вам придёт- ся явно указать это при помощи точки с запятой ( ; ), которая отмечает конец логической строки/предложения. Например, i = 5 print (i) то же самое, что и тоже самое может быть записано в виде или даже i = 5 ; print (i) 7.9. Логические и физические строки A Byte of Python (Russian), Версия Однако я настоятельно рекомендую вам придерживаться написания одной логическойстроки в каждой физической строке. Таким образом вы можете обойтись совсем без точки с запятой. Кстати, я никогда не использовали даже не встречал точки с запятой в программах на Можно использовать более одной физической строки для логической строки, но к этому следует прибегать лишь в случае очень длинных строк. Пример написания одной логической строки, занимающей несколько физических строк, приведён ниже. Это называется явным объединением строк. s = 'Это строка. \ Это строка продолжается.' print (s) Это даст результат: Это строка Это строка продолжается Аналогично, print \ (i) то же самое, что и Иногда имеет место неявное подразумевание, когда использование обратной косой черты необязательно. Это относится к случаям, когда в логической строке есть открывающаяся круглая, квадратная или фигурная скобка, нонет закрывающейся. Это называется неявным объединением строк. Вы сможете увидеть это в действии в программах с использованием iсписковiв дальнейших главах Отступы В Python пробелы важны. Точнее, пробелы вначале строки важны. Это называется отступами. Передние отступы (пробелы и табуляции) вначале логической строки используются для определения уровня отступа логической строки, который, в свою очередь, используется для группировки предложений. Это означает, что предложения, идущие вместе, должны иметь одинаковый отступ. Каждый такой набор предложений называется блоком. В дальнейших главах мы увидим примеры того, насколько важны блоки. Вы должны запомнить, что неправильные отступы могут приводить к возникновению ошибок. Например. Отступы A Byte of Python (Russian), Версия Значение составляет ' , i) # Ошибка Пробел вначале строкиprint ( 'Я повторяю, значение составляет ' , Когда вы запустите это, вы получите следующую ошибку "whitespace.py", line Значение составляет ', i) # Ошибка Пробел вначале строки unexpected Обратите внимание на то, что вначале второй строки есть один пробел. Ошибка, отобра- жённая Python, говорит нам о том, что синтаксис программы неверен, те. программа не была написана по правилам. Для вас же это означает, что вы не можете начинать новые блоки предложений где попало кроме основного блока по умолчанию, который используется на протяжении всей программы, конечно. Случаи, в которых вы можете использовать новые блоки, будут подробно описаны в дальнейших главах, как например, в главе «Поток команд» Как отступать Не смешивайте пробелы и символы табуляции в отступах, поскольку не на всех платформах это работает корректно. Я настоятельно рекомендую вам использовать одиночную табуляцию или четыре пробела для каждого уровня отступа. Выберите какой-нибудь один из этих стилей отступа. Но что ещё более важно, это использовать выбранный стиль постоянно, а также соблюдать стиль редактируемых вами файлов. Те. когда выпишете новый файл, используйте только один ваш любимый стиль, а если в редактируемом вами файле для отступов уже используются, скажем, символы табуляции, то ивы используйте в этом файле символы табуляции для отступов. Хорошие редакторы, такие как Komodo Edit, будут делать это автоматически. Замечание для программистов на статических языках программирования всегда будет использовать отступы для выделения блоков и никогда не будет использовать скобки. Введите from __future__ import braces , чтобы узнать больше. Отступы A Byte of Python (Russian), Версия 2.02 7.11 Резюме Теперь, когда мы прошли через множество жизненно важных мелочей, можно перейти к более интересным вещам – таким как управляющие конструкции. Но сначала как следует освойтесь с прочитанным в настоящей главе. Резюме Операторы и выражения Большинство предложений (логических строк) в программах содержат выражения. Простой пример выражения + 3 . Выражение можно разделить на операторы и операнды. Операторы – это некий функционал, производящий какие-либо действия, который может быть представлен в виде символов, как например, или специальных зарезервированных слов. Операторы могут производить некоторые действия над данными, и эти данные называются операндами. В нашем случае 2 и 3 – это операнды Операторы Кратко рассмотрим операторы и их применение: Обратите внимание, вычислить значения выражений, данных в примерах, можно также используя интерпретатор интерактивно. Например, для проверки выражения + воспользуйтесь интерактивной командной строкой интерпретатора Python: >>>2 + 3 5 >>>3 * 5 Операторы и их применение Оператор Название Объяснение Примеры + Сложение Суммирует два объекта + даст' + 'даст 'Вычитание Дат разность двух чисел если первый операнд отсутствует, он считается равным нулю -5.2 даст отрицательное число, а -даст 47 A Byte of Python (Russian), Версия 2.02 Оператор Название Объяснение Примеры * Умноже- ние Даёт произведение двух чисел или возвращает строку, повторённую заданное число раздаст даст 'Возведение в степень Возвращает число х , возведённое в степень y 3 ** 4 даст 81 (т.е. 3 * 3 * 3 * 3 ) / Деление Возвращает частное отделения на y 4 / 3 даст 1.3333333333333333 // Целочис- ленное деление Возвращает неполное частное отделения даст // 3 даст -2 % Деление по модулю Возвращает остаток отделения даст % 2.25 даст 1.5 << Сдвиг влево Сдвигает биты числа влево на заданное количество позиций. (Любое число в памяти компьютера представлено в виде битов - или двоичных чисел, те. 0 и 1) 2 << даст. В двоичном виде 2 представляет собой. Сдвиг влево набита дат, что в десятичном виде означает 8 >> Сдвиг вправо Сдвигает биты числа вправо на заданное число позиций >> даст. В двоичном виде 11 представляется как, что будучи смещённым набит вправо, дата это, в свою очередь, нечто иное как десятичное 5 & Побито- вое И Побитовая операция И над числами & дат. Операторы A Byte of Python (Russian), Версия 2.02 Оператор Название Объяснение Примеры | Побито- вое ИЛИ Побитовая операция ИЛИ над числами | 3 даёт 7 ^ Побито- вое ИСКЛЮ- ЧИТЕЛЬ- НО ИЛИ Побитовая операция ИС- КЛЮЧИТЕЛЬНО ИЛИ 5 ^ 3 даёт 6 Побито- вое НЕ Побитовая операция НЕ для числа x соответствует -(x+1) 5 даёт -6 < Меньше Определяет, верно ли, что меньше y . Все операторы сравнения возвращают или False 1 Обратите внимание на заглавные буквы в этих словах < 3 даст False , а 3 < 5 даст True Можно составлять произвольные цепочки сравнений < 5 < 7 даёт True > Больше Определяет, верно ли, что больше y 5 > дат. Если оба операнда - числа, то перед сравнением они оба преобразуются к одинаковому типу. В противном случае всегда возвращается False <= Меньше или равно Определяет, верно ли, что меньше или равно y x = 3; y = 6; x <= y даёт True >= Больше или равно Определяет, верно ли, что больше или равно y x = 4; y = 3; x >= дат. Операторы A Byte of Python (Russian), Версия 2.02 Оператор Название Объяснение Примеры == Равно Проверяет, одинаковы ли объекты x = 2; y = 2; x == y дат x = 'str'; y = 'stR'; x == y дат x = 'str'; y = 'str'; x == y даёт True != Не равно Проверяет, верно ли, что объекты неравны дат Логическое НЕЕсли равно, оператор вернёт False Если же равно, получим x = True; not x дат Логическое И and y дат, если равно, в противном случае возвращает значение y x = False; y = True; x and y возвращает, поскольку x равно. В этом случае Python не станет проверять значение y , так как уже знает, что левая часть выражения равняется, что подразумевает, что и всё выражение в целом будет равно, независимо от значений всех остальных операндов. Это называется укороченной оценкой булевых (логических) выражений. or Логиче- ское ИЛИ Если равно, в результате получим, в противном случае получим значение y x = True; y = False; x or y дат. Здесь также может производиться укороченная оценка выражений - англ. Верно (Правда «False» - англ. Ошибочно (Ложь. (прим. перев.) 8.1. Операторы A Byte of Python (Russian), Версия 2.02 8.1.1 Краткая запись мат. операций и присваивания Зачастую результат проведения некой математической операции необходимо присвоить переменной, над которой эта операция производилась. Для этого существуют краткие формы записи выражений: Вы можете записать в виде Обратите внимание, что выражения вида переменная = переменная операция выражение принимает вид переменная операция = выражение Порядок вычисления Если имеется выражение вида + 3 * 4 , что производится раньше сложение или умножение Школьный курс математики говорит нам, что умножение должно производиться в первую очередь. Это означает, что оператор умножения имеет более высокий приоритет, чем оператор сложения. Следующая таблица показывает приоритет операторов в Python, начиная с самого низкого (самое слабое связывание) и до самого высокого (самое сильное связывание. Это означает, что в любом выражении Python сперва вычисляет операторы и выражения, расположенные внизу таблицы, а затем операторы выше по таблице. Эта таблица взята из Справочника по языку Python (англ.) и приводится здесь для полноты описания. На практике лучше использовать скобки для группировки операторов и операндов, чтобы в явном виде указать порядок вычисления выражений. Заодно это облегчит чтение программы. Более подробно см. в разделе Изменение порядка вычисленияниже. 8.2. Порядок вычисления A Byte of Python (Russian), Версия Приоритет операторов Оператор Описание lambda лямбда-выражение Логическое «ИЛИ» and Логическое И Логическое НЕ Проверка принадлежности is , is Проверка тождественности < , <= , > , >= , != , == Сравнения | Побитовое «ИЛИ» ^ Побитовое ИСКЛЮЧИТЕЛЬНО ИЛИ» & Побитовое «И» << , >> Сдвиги + , - Сложение и вычитание * , / , // , % Умножение, деление, целочисленное деление и остаток отделения, отрицательное x Побитовое НЕ ** Возведение в степень Ссылка на атрибут x[индекс] Обращение по индексу x[индекс1:индекс2] Вырезка аргументы Вызов функции (выражения, Связка или кортеж 2 [выражения, ...] Список {ключ:данные, ...} Словарь Операторы, о которых мы не упомянули, будут объяснены в дальнейших главах. В этой таблице операторы с равным приоритетом расположены водной строке. Напри- мер, + и - имеют равный приоритет - англ. кортеж (прим. перев.) 8.2. Порядок вычисления A Byte of Python (Russian), Версия 2.02 8.3 Изменение порядка вычисления Для облегчения чтения выражений можно использовать скобки. Например + (3 * 4) определённо легче понять, чем + 3 * 4 , которое требует знания приоритета операторов. Как и всё остальное, скобки нужно использовать разумно (не перестарайтесь) и избегать излишних, как в + (3 * Есть ещё одно преимущество в использовании скобок – они дают возможность изменить порядок вычисления выражений. Например, если сложение необходимо произвести прежде умножения, можно записать нечто вроде + 3) * 4 8.4 Ассоциативность Операторы обычно обрабатываются слева направо. Это означает, что операторы с равным приоритетом будут обработаны по порядку от левого до правого. Например + 3 + обрабатывается как + 3) + 4 8.5 Выражения Пример (сохраните как expression.py ): length = 5 breadth = 2 area = length * breadth Площадь равна, Периметр равен' , 2 * (length + breadth)) Вывод:$ python Площадь равна Периметр равен Как это работает: Длина и ширина прямоугольника хранятся в переменных length и соответственно. Мы используем их для вычисления периметра и площади прямоугольника при помощи выражений. Результат выражения length * breadth сохраняется в переменной area , после чего выводится на экран функцией print . Во втором случае мы напрямую подставляем значение выражения+ в функцию print 8.3. Изменение порядка вычисления A Byte of Python (Russian), Версия Также обратите внимание, как Python красиво печатает результат. Несмотря на то, что мы не указали пробела между 'Площадь равна' и переменной подставляет егоза нас, чтобы получить красивый и понятный вывод. Программа же остаётся при этом легкочитаемой (поскольку нам ненужно заботиться о пробелах между строками, которые мы выводим. Это пример того, как Python облегчает жизнь программисту Резюме Мы увидели, как пользоваться операторами, операндами и выражениями. Это основные строительные блоки любой программы. Далее мы увидим, как это применить на практике. Резюме Поток команд В программах, которые мы до сих пор рассматривали, последовательность команд всегда выполнялась Python по порядку строго сверху вниз. А что, если нам необходимо изменить поток выполняющихся команд Например, если требуется, чтобы программа принимала некоторое решение и выполняла различные действия в зависимости от ситуации скажем, печатала Доброе утроили Добрый вечер в зависимости от времени суток. Как вы уже, наверное, догадались, этого можно достичь при помощи операторов управления потоком. Весть три оператора управления потоком и Оператор Оператор if используется для проверки условий если 1 условие верно, выполняется блок выражений (называемый блок, иначе 3 выполняется другой блок выражений (называемый блок. Блок «else» является необязательным.
|
|
|