все коды в пайтоне
Python с абсолютного нуля. Учимся кодить без скучных книжек
Содержание статьи
От редакции
Недавно мы проводили опрос о том, какой курс по Python был бы интереснее читателям. Две первые строчки с большим отрывом в нем заняли варианты «для хакера» и «Python с нуля». Узнав о таком положении дел, мы немедленно заказали статью о том, как начать программировать на Python. Если она будет иметь успех, то может превратиться в целую серию. Отличие нашего подхода — в том, что мы объясняем все живым языком и даем нескучные примеры. В общем, обучение в фирменном стиле «Хакера»!
И, поскольку это эксперимент, статья доступна без платной подписки.
Если у тебя на компе есть современный дистрибутив Linux, то в него уже входит Python 3, а писать первые программы будет удобно в IDLE — простом редакторе кода, который прилагается к Python. В Ubuntu, чтобы установить его, набери в консоли
В Windows при установке Python обязательно отметь на первом экране установщика галочку Add to Path, чтобы можно было запускать python3 из командной строки в любом удобном месте.
Запустив IDLE, зайди в Options → Configure IDLE, перейди на вкладку General и поставь галочку на пункте Open Edit Window, нажми ОK и перезапусти IDLE. Теперь можно писать программы, сохранять их и запускать клавишей F5. Ну что, погнали?
Переменные
А если изначально неизвестно, какие числа надо складывать? Тогда пришлось бы сперва попросить юзера ввести их в консоли и нажать Enter. Давай так и сделаем:
Внутри скобочек у input ты пишешь пояснение для юзера, что конкретно его просят ввести. Но вот беда, по умолчанию все, что вводится через input, считается не числом, а строкой, поэтому, прежде чем складывать количество литров пива, нужно сначала преобразовать введенные строки в числа с помощью функции int().
Вообще, типов переменных много, но суть ты уловил — чтобы производить с переменными какие‑то действия, нужно их сначала привести к одному типу — к строковому, или к числовому, или еще к какому‑нибудь. Если с этим не заморачиваться, Python сложит не числа, а строки и введенные 2 и 3 литра пива в сумме дадут не 5, а целых 23. Хорошо бы так было в реальности!
Вот еще примерчик, рассчитывающий, сколько тебе еще пить пиво, исходя из средней продолжительности жизни в России:
Условия
В основе любой программы лежат условия. В зависимости от того, выполняются они или не выполняются, программа может пойти по одному или другому пути. Представь, ты едешь на машине и смотришь на часы: если уже есть десять вечера, то поворачиваешь домой, если нет, то можно заехать в гости. Точно так же работает и программа: проверяет какое‑то значение и сворачивает туда или сюда и выполняет соответствующий кусочек кода.
Блоки кода в Python отделаются отступами. Отступ на самом деле может быть любым, например некоторые предпочитают использовать вместо четырех пробелов клавишу Tab. Главное — не смешивать в одной программе отступы разного типа. Если уж начал использовать четыре пробела, то используй по всей программе, а то Python будет на тебя ругаться и унижать.
Еще один важный момент здесь — это знак равенства в условии. Он пишется как двойное «равно» ( == ) и этим отличается от присвоения — одинарного «равно».
Функция lower(), прежде чем сравнивать условие, делает все буквы в строке маленькими, потому что глупый юзер может ввести слово YES с горящим Caps Lock, и это надо предусмотреть заранее.
На самом деле lower( ) — не просто функция, а метод класса string (строка). Именно поэтому он вызывается через точку после переменной, которая содержит строку. О классах и методах мы поговорим как‑нибудь в другой раз, а пока просто запомни, что некоторые функции вызываются таким образом.
Шпаргалки по Python — хитрости которые вы не используете!
Многие люди начинают переезжать с версии 2 на 3 из-за Python EOL (Поддержка Python 2.7 прекратиться с 2020 года). К сожалению, часто Python 3 выглядит как Python 2 со скобками. В статье я покажу несколько примеров существующих функций, которыми вы можете пользоваться только в Python 3, с надеждой на то, что это поможет решать ваши текущие и будущие задачи.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Все примеры написаны в Python 3.7 и каждая функция содержит минимальную версию Python для этой функции.
F-строки (Python 3.6+)
Сложно делать что-либо без строк в Python и чтобы сохранить адекватность, вам нужно иметь структурированный способ работы со строками. Большая часть людей, работающих с Python, предпочитают метод format python.
Pathlib (Python 3.4+)
F-строки — это отличное решение, но некоторые строки, такие как пути файлов, имеют свои собственные библиотеки, которые заметно упрощают работу. Python 3 предоставляет pathlib в качестве удобной абстракции для работы с путями файлов.
Подсказки типов | Ожидание типа | Type hinting (Python 3.5+)
Спор о том, какое типизирование python лучше — статическое или динамическое — не умолкают и по сей день и у каждого есть свое мнение на этот счет. Это личное дело читателя — когда ему нужно вписывать типы, но мне кажется что вы как минимум должны знать о том, что Python 3 поддерживает подсказки типов.
Перечисления enum (Python 3.4+)
Python 3 поддерживает простой способ написания перечислений через класс Enum. Этот класс можно назвать удобным способом инкапсуляции списка констант, чтобы они не были разбросаны по всему коду без структуры.
Перечисление — это набор символических имен (членов), связанных уникальным, постоянным значением. С перечислением, члены можно сравнить по идентичности, а само перечисление может повторяться.
Встроенный LRU кэш (Python 3.2+)
Внизу показана простая функция Фибоначчи, которая, как мы знаем, выиграет от кэширования, так как выполняет одну и ту же работу несколько раз через рекурсию.
Теперь мы можем использовать lru_cache для оптимизации (эта техника оптимизации называется меморизация). Время выполнения варьирует от секунд до наносекунд.
Повторяемая расширенная распаковка (Python 3.0+)
Здесь код будет говорить сам за себя (документация):
Классы данных (Python 3.7+)
Та же реализация класса Armor при помощи классов данных.
Пространства имен (Python 3.3+)
Один из способов структуризации кода Python заключается в пакетах (папки с файлом __init__.py ). Пример ниже предоставлен официальной документацией Python.
Впрочем, как многие пользователи заметили, это может быть не так просто, как я указал в этом разделе. Согласно спецификации 420 в PEP — файл __init__.py все еще может понадобиться для обычных пакетов, удаление его из структуры папки превратит его в пакет пространства имен, который включает в себя дополнительные ограничения, официальная документация нативных пакетов пространств имен показывают хорошие примеры тому, а также в них озвучиваются названия всех ограничений.
Подведем итоги
Как и практически любой другой список в интернете, этот нельзя назвать завершенным. Надеюсь в этой статье вы нашли хотя бы одну функцию Python 3, которой вы ранее не пользовались, и это поможет вам писать более чистый и интуитивный код.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
22 полезных примера кода на Python
Python — один из самых популярных языков программирования, чрезвычайно полезный и в решении повседневных задач. В этой статье я вкратце расскажу о 22 полезных примерах кода, позволяющих воспользоваться мощью Python.
Некоторые из примеров вы могли уже видеть ранее, а другие будут новыми и интересными для вас. Все эти примеры легко запоминаются.
1. Получаем гласные
2. Первая буква в верхнем регистре
Этот пример используется для превращения каждой первой буквы символов строки в прописную букву. Он работает со строкой из одного или нескольких символов и будет полезен при анализе текста или записи данных в файл и т.п.
3. Печать строки N раз
Этот пример может печатать любую строку n раз без использования циклов Python.
4. Объединяем два словаря
Этот пример выполняет слияние двух словарей в один.
5. Вычисляем время выполнения
Этот пример полезен, когда вам нужно знать, сколько времени требуется для выполнения программы или функции.
6. Обмен значений между переменными
Это быстрый способ обменять местами две переменные без использования третьей.
7. Проверка дубликатов
Это самый быстрый способ проверки наличия повторяющихся значений в списке.
8. Фильтрация значений False
9. Размер в байтах
Этот пример возвращает длину строки в байтах, что удобно, когда вам нужно знать размер строковой переменной.
10. Занятая память
Пример позволяет получить объём памяти, используемой любой переменной в Python.
11. Анаграммы
Этот код полезен для проверки того, является ли строка анаграммой. Анаграмма — это слово, полученное перестановкой букв другого слова.
12. Сортировка списка
Этот пример сортирует список. Сортировка — это часто используемая задача, которую можно реализовать множеством строк кода с циклом, но можно ускорить свою работу при помощи встроенного метода сортировки.
13. Сортировка словаря
14. Получение последнего элемента списка
15. Преобразование разделённого запятыми списка в строку
Этот код преобразует разделённый запятыми список в единую строку. Его удобно использовать, когда нужно объединить весь список со строкой.
16. Проверка палиндромов
Этот пример показывает, как быстро проверить наличие палиндромов.
17. Перемешивание списка
18. Преобразование строки в нижний и верхний регистры
19. Форматирование строки
Этот код позволяет форматировать строку. Под форматированием в Python подразумевается присоединение к строке данных из переменных.
20. Поиск подстроки
Этот пример будет полезен для поиска подстроки в строке. Я реализую его двумя способами, позволяющими не писать много кода.
21. Печать в одной строке
Мы знаем, что функция print выполняет вывод в каждой строке, и если использовать две функции print, они выполнят печать в две строки. Этот пример покажет, как выполнять вывод в той же строке без перехода на новую.
22. Разбиение на фрагменты
Этот пример покажет, как разбить список на фрагменты и разделить его на меньшие части.
На правах рекламы
Серверы для разработчиков — выбор среди обширного списка предустановленных операционных систем, возможность использовать собственный ISO для установки ОС, огромный выбор тарифных планов и возможность создать собственную конфигурацию в пару кликов, активация любого сервера в течение минуты. Обязательно попробуйте!
Python. Краткий справочник
Комментарии
Комментарии в Python начинаются со знака # и могут появляться в любом месте программы.
Комментарий может занимать всю строчку:
или может находиться на строчке после какого-нибудь кода:
Внимание: любую строку можно превратить в комментарий, достаточно в начале строки набрать комбинацию клавиш Ctrl+/
Числа
Числа в Python бывают трёх типов:
Строки
Строка – это последовательность символов. Чаще всего строки – это просто некоторые наборы слов. Слова могут быть как на английском языке, так и почти на любом языке мира.
Операции со строками
Методы работы сос строками
Кавычки
Строку можно указать, используя одинарные кавычки, как например, ‘Это строка’. Любой одиночный символ в кавычках, например, ‘ю’ — это строка. Пустая строка » — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек.
Запись строки в одинарных кавычках это не единственный способ. Можно использовать и двойные кавычки, как например, »Это строка». Для интерпретатора разницы между записями строки в одинарных и двойных кавычках нет.
Внимание :
Если строка началась с двойной кавычки — значит и закончиться должна на двойной кавычке.
Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных кавычках.
Театр » Современник ‘ ‘
print (‘Театр » Современник » ‘)
Строка, занимающая несколько строк, должна быть обрамлена тройными кавычками ( » » » или »’ ). Например:
»’В Python можно использовать одинарные,
двойные и тройные кавычки,
чтобы обозначить строку»’
Отступы
Оператор присваивания
Переменная – это именованная область памяти, в которой хранятся данные. Данные помещаются в эту область памяти, как в ящик, с помощью оператора присваивания. Общая форма записи операции присваивания:
Знакомый нам знак равно (=) в программирование это знак операции присваивания. Различие между знаками равно и присваивания в следующем.
Например:
b = 4
b = b + 2 # переменная будет иметь значение 6
Основные операторы
Оператор
Краткое описание
Сложение (сумма x и y)
Вычитание (разность x и y)
Умножение (произведение x и y)
Внимание! Если x и y целые, то результат всегда будет целым числом! Для получения вещественного результата хотя бы одно из чисел должно быть вещественным. Пример: 40/5 → 8, а вот 40/5.0 → 8.0
y+=x; эквивалентно y = y + x;
y*=x; эквивалентно y = y * x;
y/=x; эквивалентно y = y / x;
y%=x; эквивалентно y = y % x;
4 % 2 в результате будет 0
5 % 2 в результате будет 1
4 // 3 в результате будет 1
25 // 6 в результате будет 4
Возведение в степень
5 ** 2 в результате будет 25
логическое отрицание НЕ
Основные типы данных
Описание
float
Последовательность символов: « abc « , « pyhton « , « 123 «
list
Последовательность объектов: [ 1, 2.0, « Привет! « ]
dist
Список пар «ключ – значение» <"пять":5 >
tuple
Последовательность неизменных объектов:(20,25 )
Последовательность уникальных объектов:
bool
Логические значения: True или False
Список
Список (list) представляет тип данных, который хранит набор или последовательность элементов.
Для создания списка в квадратных скобках [ ] через запятую перечисляются все его элементы.
Создание пустого списка
Создание списка чисел:
Создание списка слов:
words = [» C «, » C ++», » Java «, » Python «] # имя списка words, он содержит 4 элемента
Создание списка из элементов разного типа
Для управления элементами списки имеют целый ряд методов. Некоторые из них:
Кроме того, Python предоставляет ряд встроенных функций для работы со списками:
Генераторы
Для создания списков, заполненных по более сложным формулам можно использовать генераторы: выражения, позволяющие заполнить список значениями, вычисленными по некоторым формулам.
Общий вид генератора следующий :
Прим ер. Создать список чисел от 0 до 10
[ i for i in range ( 0 , 10 )]
Вся конструкция заключается в квадратные скобки, потому что будет создан список. Внутри квадратных скобок можно выделить три части:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
что делаем: к значению элемента i применяем функцию chr ( i ).
Внимание. Функция chr ( i ) – по числовому коду символа возвращает сам символ. Пример. chr (65) даст символ ‘ A ‘.
[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’, ‘Z’]
Пример. Создать список строчный букв английского алфавита. Код символа ‘a’ – 97, код символа ‘z’ – 123. Поскольку символы идут подряд, то возможно использовать генератор.
[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’, ‘z’]
Библиотека math
import math # подключение модуля библиотеки
После подключения программа получает доступ ко всем функциям, методам и классам, содержащимся в нём. После подключения можно вызвать любую функцию из подключенной библиотеки по следующему правилу: указывается имя модуля и через точку имя функции
Например, пусть мы хотим вызвать функцию вычисления Синус угла, задаваемого в радианах
import math
y = sin( 5 ) # ошибка не подключен модуль math
x = math.sin( 5 ) # записываем имя модуля и через точку имя функции
from math import sin # подключена только одна функция sin
y = sin( 5 ) # операция выполнена
x = cos ( 5 ) # ошибка функция cos не подключ ена
Функция
Описание
Округление
int(x)
Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math .
round(x)
Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.
round(x, n)
floor(x)
ceil(x)
abs(x)
Модуль (абсолютная величина). Это — стандартная функция.
Корни, логарифмы
sqrt(x)
Квадратный корень. Использование : sqrt(x)
log(x)
Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b .
Основание натуральных логарифмов e = 2,71828.
Тригонометрия
sin(x)
Синус угла, задаваемого в радианах
cos(x)
Косинус угла, задаваемого в радианах
tan(x)
Тангенс угла, задаваемого в радианах
asin(x )
Арксинус, возвращает значение в радианах
acos(x)
Арккосинус, возвращает значение в радианах
atan(x)
Арктангенс, возвращает значение в радианах
atan2(y, x)
Полярный угол (в радианах) точки с координатами (x, y).
degrees(x)
Преобразует угол, заданный в радианах, в градусы.
radians(x)
Преобразует угол, заданный в градусах, в радианы.
Константа π = 3.1415.
Генерация случайных чисел (модуль random)
Python порождает случайные числа на основе формулы, так что они на самом деле не случайные, а, как говорят, псевдослучайные.
Модуль random позволяет генерировать случайные числа и имеет большое множество важных для практики функций. Рассмотрим основные функции:
Примеры
Функция random . random () случайное число от 0 до 1.
Базовые команды Python3
Здесь и далее:
x, y — объект, некая переменная,
x1/x2/x3/… — возможные варианты объявления чего-либо (в качестве подсказки для доп. понимания как эта конструкция может работать).
Типы данных
isinstance (x, str/int/bool/…) — определение типов данных.
callable (x/len/callable/…) — определение является ли аргумент вызываемым (является ли он функцией).
Проверка соответствия типу данных:
if not type(X) is str:
quit()
Фича с делением
Операции со строками
Форматирование строк
Фичи работы с булевыми данными
Другие полезные функции
range(X1, X2, Х3) — генерирует массив данных от Х1 до Х2 с шагом Х3.
input(‘Введите Х:’) — запрашивание информации у пользователя.
Вывод
print (‘something <> calling <>’.format(‘is’, 457)) — форматирование текста
dir(x) — просмотр всех характеристик переменной, аналог print_r
pprint — модуль для более удобного чтения вывода из консоли.
Списки и Справочники
list.append(‘z’) — добавить к концу списка
list.insert(X, ‘z’) — добавить в нужное место списка (X=0 — в начало списка)
list.pop[0] — удаление значения с индексом 0
list.remove(‘value’) — удаление первого встречающегося слева значения ‘value’
dict.update(
dict.pop(x) — удаление ключа
dict.get(x) — взять значение справочника без получения ошибки в случае не существования ключа
dict.keys() — получение всех ключей
dict.values() — получение всех значений
dict.items() — получение всех ключей и значений (for key, value in s.items():)
Разница между типами данных: Tuple, List, Dict.
print (‘some_string’ [0:5]) — выведет some_ — слайс.
enumerate(x) — возврат индекса списка:
Множества
Создан для математических операций над множествами объектов.
В множество нельзя добавить повторяющиеся значения — все значения множества всегда уникальны.
При этом элементы внутри множества хранятся в неупорядоченном виде, и какой порядок будет внутри — программисту неизвестно.
Циклы
Отлов ошибок
Функции
Функции выполняются интерпретатором только в момент вызова.
При этом у функции — своя область видимости, т.е. находящиеся в ней переменные доступны только в рамках этой функции, и после выполнения функции сразу уничтожаются.
Принятие сколь угодно большого числа аргументов в функции (Тьюпл)
Передача сколь угодно большого числа аргументов в функции (Справочник)
При этом при передаче дефолтных значений переменные с дефолтными значениями приема должны располагаться в самом конце списка приема, именно поэтому function X (x=5, y) — вызовет ошибку..
Функциональное программирование — это написание программного кода с чистыми функциями (функциями, которые не имеют никаких побочных эффектов). Примеры таких языков — хаски, лисп, элексир и пр.
Python — объекту-ориентированный язык программирования. Функция — это тоже объект.
Функции могут читать объявленные глобальные переменные, но не могут их переписать. Исключение — если внутри функции перед изменением глобальной переменной её вызвать как global var, что нарушает безопасность кода.
Глобальные переменные принято писать большими буквами.
Функции могут быть запущены и в одну строку:
Распаковка элементов списка
Классы
Класс — это структура данных, объединяющая одинаковые объекты.
Названия классов принято писать с большой буквы. Названия функций — с маленькой.
Переменные в классе называются атрибуты класса (поля).
Объявленные внутри класса функции называются методами.
Если переменной присваивается класс, она носит название объект.
Конструктор
Это такой метод, который вызывается тогда, когда мы создаем экземпляр класса.
1. Наследование
Наследование позволяет переиспользовать тот код, который уже есть, что делает разработку быстрее.
То есть новый класс может забирать все методы и поля родительского класса.
Переопределение
2. Инкапсуляция
Позволяет скрывать реализацию методов, что делает их использование намного удобнее и безопаснее для конечного разработчика.
Методы классов, начинающихся с нижнего подчеркивания (_name) являются внутренними функциями.
Методы классов, начинающихся с двух нижних подчеркиваний (__name) отличаются тем, что при наследовании таких классов будет происходить мэнглинг (mangling), делающий еще более приватным метод класса, не давая переопределить его значение.
3. Полиморфизм
Позволяет использовать функции по разному, вне зависимости от типа их параметров.
4. Абстракция
Позволяет упрощать сложные задачи, создавая небольшие классы для решения простых задач.
В каких случаях следует однозначно использовать классы?
Super()
Позволяет обращаться к методам родителей.
className.__mro__ — показывает очередность наследования класса, особенно полезно — если у него есть несколько родителей:
mro = method resolution object
Если метод присутствует под одним и тем же именем в разных наследуемых классах, при его вызове будет вызван метод самого дочернего класса.
Вынос кода в разные файлы
Каждый Python-файл по сути является модулем. Всё, что в нём есть, может быть прочитано и импортировано.
При запуске кода подключаются интерпретатором стандартные модули, идущие с Python, такая папка называется служебной.
Папка с запускаемым скриптом также становится служебной для интерпретатора, и из нее все файлы также могут быть импортированы без дополнительного указания путей нахождения модулей.
Импортировать принято нужные модули в каждом подключаемом файле. Да, иногда может быть повторный вызов одного и то же модуля в разных подключаемых файлах, но на производительность это не влияет, т.к. интерпретатор вызовет модуль лишь 1 раз вне зависимости от числа вызовов этого модуля.
Все модули стандартной сборки перечислены здесь.
Также, можно вызвать весь модуль, по суть превратив его в объект:
Если нам нужно импортировать скрипт, лежащий в подпапке:
if __name__ == ‘main’: #обрабатываться код будет только в случае, если файл НЕ вызван сторонним файлом.
Работа с файлами
my_file = open (‘PATH_TO_FILE’, ‘MODE’, encoding=’cp1251′)
my_file.close() #рекомендуется закрывать файлы
Encoding = опциональный параметр, по умолчанию = UTF-8.
MODE = опциональный параметр, по умолчанию = чтение:
При открытии файла курсор интерпретатора ставится в 0 позицию, в самое начало файла. После операции по чтению содержимого файла курсор ставится в конец файла.
Чтение больших файлов осуществляется с помощью цикла, т.к. такой функционал работает в качестве генератора, записывая каждую отдельную строку в память (в отличие от остальных методов чтения файла, когда весь файл загружается целиком в память компьютера):
Но есть более удобный формат открытия и закрытия файлов, с помощью with:
Для чего нужна побайтовая запись? Для работы с не текстовыми форматами. Например, с картинками:
Для работы с csv в Python есть встроенная библиотека csv. Можно работать через неё, а можно — через работу с текстовыми файлами.
Сериализация в Dump и Json
Сериализация — это сохранение словаря в файл, с последующим открытием данных файла сразу в словарь.
В Python встроено 2 библиотеки, которые позволяют делать дампы памяти в файл, с возможностью последующих импортов — это Dump & Json.
Dump:
Json:
Работа с операционной системой
Модуль OS, встроенный в интерпретатор, призван для выполнения действий с самой операционной системой:
Базы данных
Это система управления набором файлов или документов, хранящихся определенным методом в определенном месте.
Данные хранят в виде таблиц, которые могут быть взаимосвязанными (реляционными). Зачастую они поддерживают язык SQL для работы с данными. Относительно медленные из-за постоянных операций чтения и записи на диск. MySQL, PostgreSQL, SQLite.
Другая разновидность баз данных — документные (noSQL), которые хранят данные в разных видах: «ключ:значение — Redis», «ключ:json — MongoDB», «графы — OrientDB» и т.д.
Для работы с SQL базами в Python есть специальные библиотеки. А есть — сторонние системы ORM (object relational mapping, которые работают без «голого» SQL), мы же рассмотрим модуль sqlalchemy.
Использовать можно софт для визуализации работы с СУБД можно например Valentino Studio (бесплатно распространяется под MacOS, Linux и Windows).
Работа с API
Всегда прежде чем использовать АПИ следует читать инструкцию.
Если API работает с Get-запросами, то можно получать результаты работы API через браузер.
IPython
Многопоточность
Поток выполнения (thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Поток при этом находится внутри процесса.
Несколько потоков могут существовать в рамках одного процесса.
Потоки выполнения разделяют функции процесса (его код) и его контекст (значения переменных, которые они имеют в любой момент времени).
За многопоточность в Python отвечает модуль threading.
Когда потоки работают с одним и тем же ресурсом, например, пишут в файл, могут быть накладки и непорядок. Для случаев, когда результаты многопоточной работы требуется сложить в упорядоченном виде, предусмотрены блокировки потоков.
Для работы с очередью потоков хорошо подходит модуль queue (тип данных = очередь).
Так как многопоточность — это условная величина (все потоки обрабатываются не параллельно, а последовательно компьютером, с минимальным переключением по времени), зачастую имеет смысл внедрять многопоточность, если в порядке работы имеет место быть ожидание другого сайта.
Сложность работы с потоками заключается в сложности синхронизации данных между потоками. В случаях, когда скрипт спарсил страницу, нашел на ней Х ссылок, и есть необходимость пустить Х в несколько потоков, используется тип данных Очередь.
Скрипт парсинга всех страниц сайта в несколько потоков:
Многопоточность лучше вызывать из функций, в рамках которой работать с методами классов.
Обучающее видео Python
Продублировал всю информацию выше о Пайтоне в обучающий видео ролик.