Самоучитель PythonВыпуск 2Дмитрий Мусинмая 07, 2017
Скачать 0.74 Mb.
|
Самоучитель Python Выпуск 0.2 Дмитрий Мусин мая 07, 2017 Оглавление 1 Возможности языка python 1 2 Скачать Python 2 2.1 Установка Python на Windows 2 2.2 Установка Python на linux системы (ubuntu, linux mint и другие) 8 3 Первая программа. Среда разработки IDLE 10 4 Синтаксис языка Python 13 4.1 Синтаксис 13 4.2 Несколько специальных случаев 13 5 Программа не работает. Что делать? 15 6 Инструкция if-elif-else, проверка истинности, трехместное выражение if/else 20 6.1 Синтаксис инструкции if 20 6.2 Проверка истинности в Python 21 6.3 Трехместное выражение if/else 21 7 Циклы for и while, операторы break и continue, волшебное слово else 23 7.1 Цикл while 23 7.2 Цикл for 23 7.3 Оператор continue 24 7.4 Оператор break 24 7.5 Волшебное слово else 24 8 Ключевые слова, модуль keyword 25 8.1 Ключевые слова 25 8.2 Модуль keyword 26 9 Встроенные функции 27 9.1 Встроенные функции, выполняющие преобразование типов 27 9.2 Другие встроенные функции 28 i 10 Числа: целые, вещественные, комплексные 31 10.1 Целые числа (int) 31 10.2 Вещественные числа (float) 34 10.3 Комплексные числа (complex) 35 11 Работа со строками в Python: литералы 37 11.1 Литералы строк 37 12 Строки. Функции и методы строк 40 12.1 Базовые операции 40 12.2 Другие функции и методы строк 41 12.3 Таблица “Функции и методы строк” 42 13 Форматирование строк. Метод format 45 13.1 Форматирование строк с помощью метода format 45 14 Списки (list). Функции и методы списков 48 14.1 Что такое списки? 48 14.2 Функции и методы списков 49 14.3 Таблица “методы списков” 49 15 Индексы и срезы 51 15.1 Взятие элемента по индексу 51 15.2 Срезы 52 16 Кортежи (tuple) 54 16.1 Зачем нужны кортежи, если есть списки? 54 16.2 Как работать с кортежами? 55 16.3 Операции с кортежами 56 17 Словари (dict) и работа с ними. Методы словарей 57 17.1 Методы словарей 58 18 Множества (set и frozenset) 60 18.1 Что такое множество? 60 18.2 frozenset 62 19 Функции и их аргументы 63 19.1 Именные функции, инструкция def 63 19.2 Аргументы функции 64 19.3 Анонимные функции, инструкция lambda 65 20 Исключения в python. Конструкция try - except для обработки исключений 66 21 Байты (bytes и bytearray) 71 21.1 Bytearray 72 22 None (null), или немного о типе NoneType 73 22.1 Эквивалент null в Python: None 73 22.2 Проверка на None 74 ii 23 Файлы. Работа с файлами. 76 23.1 Чтение из файла 77 23.2 Запись в файл 77 24 With ... as - менеджеры контекста 79 25 PEP 8 - руководство по написанию кода на Python 81 25.1 Содержание 81 25.2 Внешний вид кода 83 25.3 Пробелы в выражениях и инструкциях 87 25.4 Комментарии 90 25.5 Контроль версий 92 25.6 Соглашения по именованию 92 25.7 Общие рекомендации 97 26 Документирование кода в Python. PEP 257 102 26.1 Что такое строки документации? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 26.2 Однострочные строки документации . . . . . . . . . . . . . . . . . . . . . . . . . . 103 26.3 Многострочные строки документации . . . . . . . . . . . . . . . . . . . . . . . . . 103 27 Работа с модулями: создание, подключение инструкциями import и from 105 27.1 Подключение модуля из стандартной библиотеки . . . . . . . . . . . . . . . . . . 105 27.2 Использование псевдонимов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 27.3 Инструкция from . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 27.4 Создание своего модуля на Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 28 Объектно-ориентированное программирование. Общее представление 110 29 Инкапсуляция, наследование, полиморфизм 112 29.1 Инкапсуляция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 29.2 Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 29.3 Полиморфизм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 30 Перегрузка операторов 115 30.1 Перегрузка арифметических операторов . . . . . . . . . . . . . . . . . . . . . . . . 117 31 Декораторы 121 31.1 Передача декоратором аргументов в функцию . . . . . . . . . . . . . . . . . . . . 123 31.2 Декорирование методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 31.3 Декораторы с аргументами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 31.4 Некоторые особенности работы с декораторами . . . . . . . . . . . . . . . . . . . 128 31.5 Примеры использования декораторов . . . . . . . . . . . . . . . . . . . . . . . . . 129 32 Устанавливаем python-пакеты с помощью pip 131 32.1 Установка pip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 32.2 Начало работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 32.3 Что ещё умеет делать pip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 33 Часто задаваемые вопросы 133 iii 33.1 Почему я получаю исключение UnboundLocalError, хотя переменная имеет значение? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 33.2 Каковы правила для глобальных и локальных переменных в Python? . . . . . 134 33.3 Почему анонимные функции (lambda), определенные в цикле с разными значениями, возвращают один и тот же результат? . . . . . . . . . . . . . . . . . 135 33.4 Как организовать совместный доступ к глобальным переменным для нескольких модулей? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 33.5 Как правильнее использовать импортирование? . . . . . . . . . . . . . . . . . . 136 33.6 Почему значения по умолчанию разделяются между объектами? . . . . . . . . 137 33.7 Как передать опциональные или именованные параметры из одной функ- ции в другую? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 33.8 Почему изменение списка ‘y’ изменяет также список ‘x’? . . . . . . . . . . . . . 139 33.9 Как создавать функции более высокого порядка? . . . . . . . . . . . . . . . . . . 140 33.10 Как скопировать объект в Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 33.11 Как узнать доступные методы и атрибуты объекта? . . . . . . . . . . . . . . . . . 141 33.12 Как можно узнать имя объекта? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 33.13 Какой приоритет у оператора “запятая”? . . . . . . . . . . . . . . . . . . . . . . . . 142 33.14 Есть ли в Python эквивалент тернарного оператора ”?:” в C? . . . . . . . . . . . . 142 33.15 Можно ли писать обфусцированные однострочники? . . . . . . . . . . . . . . . 142 33.16 Почему -22 // 10 равно -3? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 33.17 Как можно изменить строку? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 33.18 Как использовать строки для вызова функций/методов? . . . . . . . . . . . . . . 144 33.19 Как удалить все символы новой строки в конце строки? . . . . . . . . . . . . . . 145 33.20 Как удалить повторяющиеся элементы в списке? . . . . . . . . . . . . . . . . . . 145 33.21 Как создать многомерный список? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 33.22 Почему a_tuple[i] += [’item’] не работает, а добавление работает? . . . . . . . . . 146 34 Задачи по Python 148 34.1 Простейшие арифметические операции (1) . . . . . . . . . . . . . . . . . . . . . . 148 34.2 Високосный год (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 34.3 Квадрат (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 34.4 Времена года (4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 34.5 Банковский вклад (5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 34.6 Простые числа (6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 34.7 Правильная дата (7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 34.8 XOR-шифрование (8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 iv Глава 1 Возможности языка python Так как мне часто стали задавать вопросы о том, чем может быть полезен Python, я решил написать небольшую обзорную статью на эту тему. Вот лишь некоторые вещи, которые умеет делать python: • Работа с xml/html файлами • Работа с http запросами • GUI (графический интерфейс) • Создание веб-сценариев • Работа с FTP • Работа с изображениями, аудио и видео файлами • Робототехника • Программирование математических и научных вычислений И многое, многое другое... Таким образом, python подходит для решения львиной доли повседневных задач, будь то резервное копирование, чтение электронной почты, либо же какая-нибудь игрушка. Язык программирования Python практически ничем не ограничен, поэтому также мо- жет использоваться в крупных проектах. К примеру, python интенсивно применяется IT- гигантами, такими как, например, Google и Yandex. К тому же простота и универсаль- ность python делают его одним из лучших языков программирования. 1 Глава 2 Скачать Python Сегодня мы поговорим о том, как скачать и установить python 3 на свой компьютер. Бес- платно, без регистрации и SMS :) Установка Python на Windows Скачивать python будем с официального сайта . Кстати, не рекомендую скачивать интер- претатор python с других сайтов или через торрент, в них могут быть вирусы. Програм- ма бесплатная. Заходим на https://python.org/downloads/windows/ , выбираем “latest python release” и python 3. На python 2 могут не работать некоторые мои примеры программ. На момент написания статьи это python 3.4.1. 2 Самоучитель Python, Выпуск 0.2 Появляется страница с описанием данной версии Python (на английском). Если интерес- но - можете почитать. Затем крутим в самый низ страницы, а затем открываем “download page”. 2.1. Установка Python на Windows 3 Самоучитель Python, Выпуск 0.2 Вы увидите список файлов, которые можно загрузить. Нам нужен Windows x86 MSI installer (если система 32-х битная), или Windows x86-64 MSI installer (если система 64-х битная). Больше из файлов нам ничего не нужно. 2.1. Установка Python на Windows 4 Самоучитель Python, Выпуск 0.2 Ждём, пока python загрузится. Затем открываем загрузившийся файл. Файл подписан Python Software Foundation, значит, все в порядке. Пользуясь случаем, напоминаю, что не стоит открывать незнакомые exe файлы. 2.1. Установка Python на Windows 5 Самоучитель Python, Выпуск 0.2 Устанавливаем для всех пользователей или только для одного (на ваше усмотрение). Выбираем папку для установки. Я оставляю папку по умолчанию. Вы можете выбрать любую папку на своем диске. 2.1. Установка Python на Windows 6 Самоучитель Python, Выпуск 0.2 Выбираем компоненты, которые будут установлены. Оставьте компоненты по умолча- нию, если не уверены. 2.1. Установка Python на Windows 7 Самоучитель Python, Выпуск 0.2 Ждем установки python... Finish. Поздравляю, вы установили Python! Также в установщик python для windows встроена среда разработки IDLE. Прямо сейчас вы можете написать свою первую про- грамму ! Установка Python на linux системы (ubuntu, linux mint и дру- гие) Откройте консоль (обычно ctrl+alt+t). Введите в консоли: python3 Скорее всего, вас любезно поприветствует python 3: 2.2. Установка Python на linux системы (ubuntu, linux mint и другие) 8 Самоучитель Python, Выпуск 0.2 Python 3.4 0 (default, Apr 11 2014 , 13 : 05 : 11 ) [GCC 4.8 2 ] on linux Type "help" , "copyright" , "credits" or "license" for more information >>> Если это так, то можно вас поздравить: у вас уже стоит python 3. В противном случае нужно установить пакет *python3*: sudo apt - get install python3 Либо через mintinstaller / synaptic / центр приложений ubuntu / что вам больше нравится. В python для linux нет предустановленной среды IDLE. Если хотите, её можно устано- вить отдельно. Пакет называется *idle3* (в более ранних версиях он может называться python3-idle). Однако, её установка не является обязательной. Вы можете писать в своём любимом тек- стовом редакторе (gedit, vim, emacs...) и запускать программы через консоль: python3 path_to_file py Теперь вы можете написать первую программу (хотите, пишите в IDLE, хотите - в своём любимом текстовом редакторе). 2.2. Установка Python на linux системы (ubuntu, linux mint и другие) 9 Глава 3 Первая программа. Среда разработки IDLE Сегодня мы напишем свою первую программу в среде разработки IDLE. После загрузки и установки python открываем IDLE (среда разработки на языке Python, поставляемая вместе с дистрибутивом). Здесь и далее буду приводить примеры под ОС Windows, так как именно она у меня сей- час под рукой. 10 Самоучитель Python, Выпуск 0.2 Запускаем IDLE (изначально запускается в интерактивном режиме), после чего уже мож- но начинать писать первую программу. Традиционно, первой программой у нас будет “hello world”. Чтобы написать “hello world” на python, достаточно всего одной строки: ( "Hello world!" ) Вводим этот код в IDLE и нажимаем Enter. Результат виден на картинке: Поздравляю! Вы написали свою первую программу на python! ( если что-то не работает ). С интерактивным режимом мы немного познакомились, можете с ним ещё поиграться, например, написать print ( 3 + 4 ) ( 3 * 5 ) ( 3 ** 2 ) Но, всё-таки, интерактивный режим не будет являться основным. В основном, вы будете сохранять программный код в файл и запускать уже файл. Для того, чтобы создать новое окно, в интерактивном режиме IDLE выберите File → New File (или нажмите Ctrl + N). 11 Самоучитель Python, Выпуск 0.2 В открывшемся окне введите следующий код: name = input ( "Как Вас зовут? " ) ( "Привет," , name) Первая строка печатает вопрос (“Как Вас зовут? ”), ожидает, пока вы не напечатаете что- нибудь и не нажмёте Enter и сохраняет введённое значение в переменной name. Во второй строке мы используем функцию print для вывода текста на экран, в данном случае для вывода “Привет, ” и того, что хранится в переменной “name”. Теперь нажмём F5 (или выберем в меню IDLE Run → Run Module) и убедимся, что то, что мы написали, работает. Перед запуском IDLE предложит нам сохранить файл. Сохраним туда, куда вам будет удобно, после чего программа запустится. Вы должны увидеть что-то наподобие этого (на скриншоте слева - файл с написанной вами программой, справа - результат её работы): Поздравляю! Вы научились писать простейшие программы, а также познакомились со средой разработки IDLE. Теперь можно немного отдохнуть, а потом начать изучать python дальше. Можете посмотреть синтаксис python , циклы или условия . Желаю удачи! 12 Глава 4 Синтаксис языка Python Синтаксис языка Python, как и сам язык, очень прост. Синтаксис • Конец строки является концом инструкции (точка с запятой не требуется). • Вложенные инструкции объединяются в блоки по величине отступов. Отступ может быть любым, главное, чтобы в пределах одного вложенного блока отступ был одина- ков. И про читаемость кода не забывайте. Отступ в 1 пробел, к примеру, не лучшее решение. Используйте 4 пробела (или знак табуляции, на худой конец). • Вложенные инструкции в Python записываются в соответствии с одним и тем же шаблоном, когда основная инструкция завершается двоеточием, вслед за которым располагается вложенный блок кода, обычно с отступом под строкой основной ин- струкции. Основная инструкция: Вложенный блок инструкций Несколько специальных случаев • Иногда возможно записать несколько инструкций в одной строке, разделяя их точ- кой с запятой: a = 1 ; b = 2 ; (a, b) 13 Самоучитель Python, Выпуск 0.2 Но не делайте это слишком часто! Помните об удобочитаемости. А лучше вообще так не делайте. • Допустимо записывать одну инструкцию в нескольких строках. Достаточно ее за- ключить в пару круглых, квадратных или фигурных скобок: if (a == 1 and b == 2 and c == 3 and d == 4 ): # Не забываем про двоеточие print ( 'spam' * 3 ) • Тело составной инструкции может располагаться в той же строке, что и тело основ- ной, если тело составной инструкции не содержит составных инструкций. Ну я ду- маю, вы поняли :). Давайте лучше пример приведу: if x > y: (x) Полное понимание синтаксиса, конечно, приходит с опытом, поэтому я советую вам за- глянуть в рубрику “ Примеры программ ”. Также советую прочитать PEP 8 — руководство по написанию кода на Python и Докумен- тирование кода в Python. PEP 257 |