Similar presentations:
Python
1.
** Python[комм 1] (МФА: [ˈpʌɪθ(ə)n]; в
русском языке распространено
название пито́н[13]) —
высокоуровневый язык
программирования общего
назначения, ориентированный на
повышение производительности
разработчика и читаемости
кода. Синтаксис ядра Python
минималистичен. В то же
время стандартная
библиотека включает большой объём
полезных функций.
2.
** Разработка языка Python была начата в конце 1980-х годов[20] сотрудником
голландского института CWI Гвидо ван Россумом. Для распределённой
ОС Amoeba требовался расширяемый скриптовый язык, и Гвидо начал писать
Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо
участвовал в разработке этого языка, ориентированного на обучение
программированию). В феврале 1991 года Гвидо опубликовал исходный текст
в группе новостей alt.sources[21]. С самого начала Python проектировался
как объектно-ориентированный язык.
* Гвидо ван Россум назвал язык в честь популярного британского комедийного
телешоу 1970-х «Летающий цирк Монти Пайтона»[51], поскольку автор был
поклонником этого телешоу, как и многие другие разработчики того времени, а
в самом шоу прослеживалась некая параллель с миром компьютерной
техники[27].
* Наличие дружелюбного, отзывчивого сообщества пользователей считается,
наряду с дизайнерской интуицией Гвидо, одним из факторов успеха Python.
Развитие языка происходит согласно чётко регламентированному процессу
создания, обсуждения, отбора и реализации документов PEP (англ. Python
Enhancement Proposal) — предложений по развитию Python[22].
* 3 декабря 2008 года[23], после длительного тестирования, вышла первая версия
Python 3000 (или Python 3.0, также используется сокращение Py3k). В Python
3000 устранены многие недостатки архитектуры с максимально возможным (но
не полным) сохранением совместимости со старыми версиями Python. На
сегодня поддерживаются обе ветви развития (Python 3.x и 2.x), но поддержка
Python 2.7 заканчивается в 2020 году.
3.
*4.
** Работа с xml/html файлами
* Работа с http запросами
* GUI (графический интерфейс)
* Создание веб-сценариев
* Работа с FTP
* Работа с изображениями, аудио и видео файлами
* Робототехника
* Программирование математических и научных вычислений
Таким образом, python подходит для решения львиной доли
повседневных задач, будь то резервное копирование, чтение
электронной почты, либо же какая-нибудь игрушка. Язык
программирования Python практически ничем не ограничен, поэтому
также может использоваться в крупных проектах. К примеру, python
интенсивно применяется IT-гигантами, такими как, например, Google и
Yandex. К тому же простота и универсальность python делают его
одним из лучших языков программирования.
5.
** Конец строки является концом инструкции (точка с запятой
не требуется).
* Вложенные инструкции объединяются в блоки по величине
отступов. Отступ может быть любым, главное, чтобы в
пределах одного вложенного блока отступ был одинаков.
Отступ в 1 пробел, к примеру, не лучшее решение.
Используйте 4 пробела (или знак табуляции, на худой
конец).
* Вложенные инструкции в Python записываются в
соответствии с одним и тем же шаблоном, когда основная
инструкция завершается двоеточием, вслед за которым
располагается вложенный блок кода, обычно с отступом под
строкой основной инструкции.
Основная инструкция:
Вложенный блок инструкций
6.
** Иногда возможно записать несколько инструкций в
одной строке, разделяя их точкой с запятой:
a = 1; b = 2; print(a, b)
* Допустимо записывать одну инструкцию в нескольких
строках. Достаточно ее заключить в пару круглых,
квадратных или фигурных скобок:
* Тело составной инструкции может располагаться в той
же строке, что и тело основной, если тело составной
инструкции не содержит составных инструкций.
7.
** Переменные предназначены для хранения данных. Название
переменной в Python должно начинаться с алфавитного
символа или со знака подчеркивания и может содержать
алфавитно-цифровые символы и знак подчеркивания. И
кроме того, название переменной не должно совпадать с
названием ключевых слов языка Python. Ключевых слов не
так много, их легко запомнить:
8.
** Сначала записывается часть if с условным
выражением, далее могут следовать одна или более
необязательных частей elif, и, наконец,
необязательная часть else.
Примеры:
9.
** Любое число, не равное 0, или непустой объект истина.
* Числа, равные 0, пустые объекты и значение None ложь
* Операции сравнения применяются к структурам
данных рекурсивно
* Операции сравнения возвращают True или False
* Логические операторы and и or возвращают истинный
или ложный объект-операнд:
- истина, если оба значения X и Y истинны.
- истина, если хотя бы одно из значений X или Y
истинно.
- истина, если X ложно.
10.
** В данной инструкции интерпретатор выполнит
выражение Y, если X истинно, в противном случае
выполнится выражение Z.
11.
*While - один из самых
универсальных циклов в Python,
поэтому довольно медленный.
Выполняет тело цикла до тех пор,
пока условие цикла истинно.
12.
** Цикл for уже чуточку сложнее, чуть менее
универсальный, но выполняется гораздо быстрее
цикла while. Этот цикл проходится по любому
итерируемому объекту (например строке или списку),
и во время каждого прохода выполняет тело цикла.
13.
** Оператор continue начинает следующий проход цикла,
минуя оставшееся тело цикла (for или while)
14.
** Оператор break досрочно прерывает цикл.
15.
** Слово else, примененное в цикле for или while,
проверяет, был ли произведен выход из цикла
инструкцией break, или же "естественным" образом.
Блок инструкций внутри else выполнится только в том
случае, если выход из цикла произошел без помощи
break.
16.
** Числа в Python 3 ничем не отличаются от обычных чисел. Они
поддерживают набор самых обычных математических
операций:
x+y
Сложение
x-y
Вычитание
x*y
Умножение
x/y
Деление
x // y
Получение целой части от деления
x%y
Остаток от деления
-x
Смена знака числа
abs(x)
Модуль числа
divmod(x, y)
Пара (x // y, x % y)
x ** y
Возведение в степень
pow(x, y[, z])
xy по модулю (если модуль задан)
17.
** int([object], [основание системы счисления]) -
преобразование к целому числу в десятичной системе
счисления. По умолчанию система счисления
десятичная, но можно задать любое основание от 2 до
36 включительно.
* bin(x) - преобразование целого числа в двоичную
строку.
* hex(х) - преобразование целого числа в
шестнадцатеричную строку.
* oct(х) - преобразование целого числа в восьмеричную
строку.
18.
** Вещественные числа поддерживают те же операции,
что и целые. Однако (из-за представления чисел в
компьютере) вещественные числа неточны, и это
может привести к ошибкам:
* Для высокой точности используют другие объекты
(например Decimal и Fraction)).
* Также вещественные числа не поддерживают длинную
арифметику:
19.
** loat.as_integer_ratio() - пара целых чисел, чьё
отношение равно этому числу.
* float.is_integer() - является ли значение целым
числом.
* float.hex() - переводит float в hex (шестнадцатеричную
систему счисления).
* classmethod float.fromhex(s) - float из
шестнадцатеричной строки.
* Модуль math предоставляет более сложные
математические функции.
* Модуль random реализует генератор случайных чисел
и функции случайного выбора.
20.
** В Python встроены комплексные
числа:
Также для работы с комплексными числами
используется также модуль cmath.
21.
** Строки в Python - упорядоченные последовательности
символов, используемые для хранения и
представления текстовой информации, поэтому с
помощью строк можно работать со всем, что может
быть представлено в текстовой форме.
* Литералы строк - строки в апострофах и в кавычках
* Строки в апострофах и в кавычках - одно и то же.
Причина наличия двух вариантов в том, чтобы
позволить вставлять в литералы строк символы
кавычек или апострофов, не используя экранирование.
22.
** Экранированные последовательности позволяют
вставить символы, которые сложно ввести с
клавиатуры.
* "Сырые" строки - подавляют экранирование
23.
Экранированная последовательностьНазначение
\n
Перевод строки
\a
Звонок
\b
Забой
\f
Перевод страницы
\r
Возврат каретки
\t
Горизонтальная табуляция
\v
Вертикальная табуляция
\N{id}
Идентификатор ID базы данных
Юникода
\uhhhh
16-битовый символ Юникода в 16ричном представлении
\Uhhhh…
32-битовый символ Юникода в 32ричном представлении
\xhh
16-ричное значение символа
\ooo
8-ричное значение символа
\0
Символ Null (не является признаком
конца строки)
24.
** Если перед открывающей кавычкой стоит символ 'r' (в
любом регистре), то механизм экранирования
отключается.
* Но, несмотря на назначение, "сырая" строка не может
заканчиваться символом обратного слэша. Пути
решения:
25.
** Главное достоинство
строк в тройных кавычках в том,
что их можно использовать для
записи многострочных блоков текста. Внутри такой
строки возможно присутствие кавычек и апострофов,
главное, чтобы не было трех кавычек подряд.
26.
** Конкатенация (сложение)
* Дублирование строки
* Длина строки (функция len)
* Доступ по индексу
27.
** Извлечение среза
Оператор извлечения среза: [X:Y]. X – начало среза, а Y
– окончание;
символ с номером Y в срез не входит. По умолчанию
первый индекс равен 0, а второй - длине строки.
28.
** Список методов можно найти в документации
* При вызове методов необходимо помнить, что строки в
Python относятся к категории неизменяемых
последовательностей, то есть все функции и методы
могут лишь создавать новую строку.
* Поэтому все строковые методы возвращают новую строку,
которую потом следует присвоить переменной.
29.
** Иногда (а точнее, довольно часто) возникают
ситуации, когда нужно сделать строку, подставив в
неё некоторые данные, полученные в процессе
выполнения программы (пользовательский ввод,
данные из файлов и т. д.). Подстановку данных можно
сделать с помощью форматирования строк.
Форматирование можно сделать с помощью оператора
%, либо с помощью метода format.
* Если для подстановки требуется только один аргумент,
то значение - сам аргумент.
30.
*31.
** Спецификация в формате
32.
*Флаг
Значение
'<'
Символы-заполнители будут справа
(выравнивание объекта по левому
краю) (по умолчанию).
'>'
выравнивание объекта по правому
краю.
'='
Заполнитель будет после знака, но
перед цифрами. Работает только с
числовыми типами.
'^'
Выравнивание по центру.
33.
** Опция "знак" используется только для чисел и может
принимать следующие значения:
Флаг
Значение
'+'
Знак должен быть использован для всех
чисел.
'-'
'-' для отрицательных, ничего для
положительных.
'Пробел'
'-' для отрицательных, пробел для
положительных.
34.
ТипЗначение
'd', 'i', 'u'
Десятичное число.
'o'
Число в восьмеричной системе счисления.
'x'
Число в шестнадцатеричной системе
счисления (буквы в нижнем регистре).
'X'
Число в шестнадцатеричной системе
счисления (буквы в верхнем регистре).
'e'
Число с плавающей точкой с экспонентой
(экспонента в нижнем регистре).
'E'
Число с плавающей точкой с экспонентой
(экспонента в верхнем регистре).
'f', 'F'
Число с плавающей точкой (обычный
формат).
'g'
Число с плавающей точкой. с экспонентой
(экспонента в нижнем регистре), если она
меньше, чем -4 или точности, иначе обычный
формат.
'G'
Число с плавающей точкой. с экспонентой
(экспонента в верхнем регистре), если она
меньше, чем -4 или точности, иначе обычный
формат.
'c'
Символ (строка из одного символа или число код символа).
's'
Строка.
'%'
Число умножается на 100, отображается
число с плавающей точкой, а за ним знак %.
*
35.
** Списки в Python - упорядоченные изменяемые
коллекции объектов произвольных типов (почти как
массив, но типы могут отличаться).
* Чтобы использовать списки, их нужно создать. Создать
список можно несколькими способами. Например,
можно обработать любой итерируемый объект
(например, строку) встроенной функцией list
36.
** Список можно создать и при помощи литерала
* Список может содержать любое количество любых
объектов (в том числе и вложенные списки), или не
содержать ничего
37.
** И еще один способ создать список - это генераторы
списков. Генератор списков - способ построить новый
список, применяя выражение к каждому элементу
последовательности. Генераторы списков очень
похожи на цикл for.
38.
** Возможна и более сложная конструкция генератора
списков:
* Но в сложных случаях лучше пользоваться обычным
циклом for для генерации списков.
39.
** Нужно отметить, что методы списков, в отличие от строковых
методов, изменяют сам список, а потому результат
выполнения не нужно записывать в эту переменную.
40.
** Кортеж, по сути - неизменяемый список.
* Защита от дурака. То есть кортеж защищен от изменений, как
намеренных (что плохо), так и случайных (что хорошо).
* Меньший размер.
41.
* Создаем пустой кортеж*
* Создаем кортеж из одного элемента.
* Получился список. Кортеж создается так
* Все дело - в запятой. Сами по себе скобки ничего не значат,
точнее, значат то, что внутри них находится одна инструкция,
которая может быть отделена пробелами, переносом строк и
прочим мусором.
42.
** Создать кортеж из итерируемого объекта можно с помощью
все той же пресловутой функции tuple()
* В качестве операций над кортежами применимы все операции
над списками, не изменяющие список (сложение, умножение
на число, методы index() и count() и некоторые другие
операции). Можно также по-разному менять элементы
местами и так далее.
* Например, гордость программистов на python - поменять
местами значения двух переменных:
43.
** Словари в Python - неупорядоченные коллекции
произвольных объектов с доступом по ключу. Их иногда ещё
называют ассоциативными массивами или хеш-таблицами.
* Создать словарь можно несколькими способами. Во-первых, с
помощью литерала:
* Во-вторых, с помощью функции dict:
44.
* В-третьих, с помощью метода fromkeys:*
* В-четвертых, с помощью генераторов словарей, которые очень
похожи на генераторы списков.
45.
** Попробуем добавить записей в словарь и извлечь значения
ключей:
* Присвоение по новому ключу расширяет словарь, присвоение
по существующему ключу перезаписывает его, а попытка
извлечения несуществующего ключа порождает исключение.
* Методы словарей можно посмотреть в документации
46.
** Множество в python - "контейнер", содержащий не
повторяющиеся элементы в случайном порядке.
* Как видно из примера, множества имеет тот же литерал, что и
словарь, но пустое множество с помощью литерала создать
нельзя.
47.
** Множества удобно использовать для удаления повторяющихся
элементов:
* С множествами можно выполнять множество операций:
находить объединение, пересечение...
* Список методов множеств можно найти в документации
48.
** Единственное отличие set от frozenset заключается в том, что
set - изменяемый тип данных, а frozenset - нет. Примерно
похожая ситуация с списками и кортежами.
49.
** Как и во многих других языках, нумерация элементов
начинается с нуля. При попытке доступа к несуществующему
индексу возникает исключение IndexError.
* Взять элемент по индексу можно у разных типов: список,
строка, кортеж.
* В Python также поддерживаются отрицательные индексы, при
этом нумерация идёт с конца.
50.
** В Python, кроме индексов, существуют ещё и срезы.
* item[START:STOP:STEP] - берёт срез от номера START, до STOP
(не включая его), с шагом STEP. По умолчанию START = 0, STOP
= длине объекта, STEP = 1. Соответственно, какие-нибудь (а
возможно, и все) параметры могут быть опущены.
* Также с помощью срезов можно не только извлекать
элементы, но и добавлять и удалять элементы (разумеется,
только для изменяемых последовательностей).