Создаем пакеты
Пакет в Python — это, грубо говоря, папка с другими папками и модулями. Помимо разделения частей проекта, пакеты нужны для формирования пространства имен, чтобы можно работать с пакетами и модулями через точку, как в примере на картинке.
При импорте вида
Также примечателен файл __init__.py, который раньше был обязателен для создания пакетов. С версии Python 3.3 эта необходимость пропала, но его функциональность на этом не заканчивается.
Пакет в Python — это, грубо говоря, папка с другими папками и модулями. Помимо разделения частей проекта, пакеты нужны для формирования пространства имен, чтобы можно работать с пакетами и модулями через точку, как в примере на картинке.
При импорте вида
from package import * будет подключены либо все модули и объекты модуля __init__.py, либо то, что находится в переменной __all__ в том же модуле __init__.py.Также примечателен файл __init__.py, который раньше был обязателен для создания пакетов. С версии Python 3.3 эта необходимость пропала, но его функциональность на этом не заканчивается.
Шуточный пакет pyjokes
Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.
Также есть отдельная категория с шутками Чака Норриса.
Если в вашей крови течёт PEP, а дома вас ждёт домашняя змея в клетке, то и шутки вам нужны соответствующие. Вы всегда можете получить их с помощью модуля pyjokes. Устанавливается, как всегда, через pip.
Также есть отдельная категория с шутками Чака Норриса.
Don't worry about tests, Chuck Norris's test cases cover your code too.art
Всё, что вам может понадобится для вывода красивых надписей или артов в терминал. Ставится с помощью команды
Всё, что вам может понадобится для вывода красивых надписей или артов в терминал. Ставится с помощью команды
pip install art. Полный список возможностей есть в документации.Завершение программы
Функция
По факту функция просто поднимает исключение
Использовать
Функция
exit создана для удобства работы в интерактивном режиме, но не рекомендуется использовать её внутри скриптов. По факту функция просто поднимает исключение
SystemExit, а при попытке вызова без скобок напишет подсказку о правильном способе выхода из интерпретатора.Использовать
sys.exit() стоит, так как этот метод есть в стандартном модуле и всегда там доступен. А ещё это довольно явный и понятный способ завершения программы.Отправляем электронные письма
SMTP (Simple Mail Transfer Protocol) — это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке есть пакет
Для подключения к серверу будем использовать класс
Отправлять письма следует методом
Следует обратить внимание на то, что некоторые почтовые сервисы могут не разрешить так сразу подключаться к их серверам и производить операции. В этом случае пришлось немного повоевать с Gmail.
SMTP (Simple Mail Transfer Protocol) — это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке есть пакет
smtplib, реализующий его поведение. Для подключения к серверу будем использовать класс
SMTP_SSL, включающий в себя и шифрование. В качестве аргументов передадим ему адрес сервера и порт. Авторизация происходит с помощью метода login, в который передаём логин и пароль. Отправлять письма следует методом
sendmail, который принимает адреса отправителя и получателя, а также сам текст. В конце программы следует закрывать соединение с помощью метода quit(). Следует обратить внимание на то, что некоторые почтовые сервисы могут не разрешить так сразу подключаться к их серверам и производить операции. В этом случае пришлось немного повоевать с Gmail.
Получаем текст с картинки
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов. В качестве обертки над их системой был создан пакет
Чтобы получить текст с картинки, надо вызвать метод
Для открытия картинок рекомендуется использовать
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов. В качестве обертки над их системой был создан пакет
pytesseract, который удобно и легко использовать. Чтобы получить текст с картинки, надо вызвать метод
image_to_string. Если вас интересует текст на русском, то следует указать аргумент lang как 'rus'. Для открытия картинок рекомендуется использовать
pillow, хоть и имеется возможность просто указать путь к файлу в виде строки.Временные файлы
В стандартной библиотеке Python имеется модуль
Функция
Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера, а другие процессы и приложения не смогут получить доступ к этому временному файлу.
В стандартной библиотеке Python имеется модуль
tempfile, содержащий классы и методы для работы со временными файлами и директориями. Такие файлы нужны для сохранения промежуточных результатов выполнения программы.Функция
TemporaryFile создает временный файл в системной директории и возвращает файлоподобный объект.Созданный временный файл будет автоматически удален по закрытию файла или при выходе из контекстного менеджера, а другие процессы и приложения не смогут получить доступ к этому временному файлу.
Универсальный парсер статей
Пакет
В качестве примера на картинке парсим статью https://proglib.io/sh/DhyuCFH5p3. Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница, поэтому в некоторых случаях результат может отличаться от ожиданий.
Пакет
newspaper3k позволяет парсить статьи и извлекать из них заголовки, текст, дату публикации, имена авторов и много другой информации. Полный список возможностей в документации.В качестве примера на картинке парсим статью https://proglib.io/sh/DhyuCFH5p3. Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница, поэтому в некоторых случаях результат может отличаться от ожиданий.
Объект Ellipsis
В Python есть крайне интересный объект, который обозначается как
Применяется зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например,
Если привести его к логическому типу данных, то увидим
В Python есть крайне интересный объект, который обозначается как
..., то есть многоточие. Он называется Ellipsis, и используется в основном как заготовка для чего-то ещё не реализованного.Применяется зачастую при работе со срезами в Numpy, но и в обычном коде его тоже встретить можно. Например,
... периодически встречается в теле функции в качестве заглушки.Если привести его к логическому типу данных, то увидим
True — это важный момент, потому что похожий на Ellipsis по своей сути None выдает False.Ищем ошибки с помощью assert
Инструкция
Если выполнить инструкцию
Однако не нужно пытаться обработать исключение
В примере на картинке проверяется, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Инструкция
assert принимает логическое выражение и необязательное сообщение. Используется для проверки типов, значений аргумента и вывода функции, а ещё для отладки, поскольку останавливает программу в случае ошибки.Если выполнить инструкцию
assert с логическим выражением, результат которого равен True, то ничего не произойдет. Но в случае с False будет сгенерировано исключение AssertionError.Однако не нужно пытаться обработать исключение
AssertionError блоком try-except, так как assert тогда теряет свой смысл.В примере на картинке проверяется, является ли переданный аргумент числовым типом данных. Если не является, то будет вызвано исключение и выведено указанное сообщение.
Имеется кортеж вида T = (4, 2, 3). Какая из операций приведёт к тому, что имя T будет ссылаться на кортеж (1, 2, 3)?
Anonymous Quiz
23%
T[0] = 1
20%
T = (1) + T[1:]
34%
T = (1,) + T[1:]
23%
T.startswith(1)
Python-dateutil
Пакет предлагает мощные расширения стандартного модуля datetime. С этой библиотекой можно сделать много полезного, но мы ограничимся одним примером, который используется чаще всего, — нечеткий разбор (парсинг) дат. Документацию пакета можете найти по ссылке.
Пакет предлагает мощные расширения стандартного модуля datetime. С этой библиотекой можно сделать много полезного, но мы ограничимся одним примером, который используется чаще всего, — нечеткий разбор (парсинг) дат. Документацию пакета можете найти по ссылке.
Pillow
Pillow является ответвлением Python Imaging Library. Эта библиотека подойдет для создания миниатюр, преобразования в различные форматы, наложения фильтров, вращения и отображения изображений и т.д. К тому же это идеальный вариант для пакетной обработки большого количества изображений.
Для большей наглядности приведу пример того, как вы можете отобразить изображение из Python-кода. Проект устанавливается, как всегда, с помощью pip, документацию можете найти по ссылке.
Pillow является ответвлением Python Imaging Library. Эта библиотека подойдет для создания миниатюр, преобразования в различные форматы, наложения фильтров, вращения и отображения изображений и т.д. К тому же это идеальный вариант для пакетной обработки большого количества изображений.
Для большей наглядности приведу пример того, как вы можете отобразить изображение из Python-кода. Проект устанавливается, как всегда, с помощью pip, документацию можете найти по ссылке.
Операторы множеств
Множество — это коллекция, где все элементы уникальны, то есть одно и то же значение не может повторяться дважды.
Кроме обычных методов у множеств реализована поддержка различных операторов: пересечение, объединение, симметрическая разность, обычная разность и другие.
Примеры этих операторов можете посмотреть на картинке.
Множество — это коллекция, где все элементы уникальны, то есть одно и то же значение не может повторяться дважды.
Кроме обычных методов у множеств реализована поддержка различных операторов: пересечение, объединение, симметрическая разность, обычная разность и другие.
Примеры этих операторов можете посмотреть на картинке.
Работаем с буфером обмена
Есть пакет
В этом пакете есть две основные функции —
Получается, что можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Есть пакет
pyperclip, который позволяет отправлять текст в буфер обмена вашего компьютера и получать его оттуда.В этом пакете есть две основные функции —
copy() и paste(), по названиям которых сразу понятны их предназначения — копировать и вставлять.Получается, что можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
Как работают статические методы
Статические методы создаются в классе при помощи декоратора
Данный тип методов не может модифицировать ни объект, ни сам класс, то есть передавать объект или класс и прописывать
Функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.
Статические методы создаются в классе при помощи декоратора
@staticmethod. Такие методы привязываются к классу, а не объекту — в этом и основное отличие.Данный тип методов не может модифицировать ни объект, ни сам класс, то есть передавать объект или класс и прописывать
self или cls в аргументах не надо.Функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.
Оператор неравенства и Бэрри
1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе "дружелюбный дядя языка на всю жизнь".
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
Для этого можно импортировать
Это всё было первоапрельской шуткой, но оператор
1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе "дружелюбный дядя языка на всю жизнь".
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
!= на <>. Изменения обещали выпустить в последующих версиях, но его можно было протестировать и раньше времени.Для этого можно импортировать
barry_as_FLUFL из пакета __future__. Результат можете видно на картинке.Это всё было первоапрельской шуткой, но оператор
<> всё ещё доступен и является некой пасхалкой.Для чего в Python используется встроенная функция enumerate()?
Anonymous Quiz
17%
Для определения количества элементов последовательности.
61%
Для одновременного итерирования по самим элементам и их индексам.
12%
Для сортировки элементов по значениям id.
10%
Нет верного ответа
FuzzyWuzzy
Множество раз вам могло прийти в голову реализовать “размытую” функцию поиска для вашей программы, которая в процентах может сравнивать строки. FuzzyWuzzy предоставляет готовое и лёгкое решение.
В первом примере кода на картинке с помощью
Если у вас есть список строк, и совпадения необходимо искать во всех строках, FuzzyWuzzy поможет выделить наиболее похожие. Это мы и делаем во втором примере, сравнивая строки
Множество раз вам могло прийти в голову реализовать “размытую” функцию поиска для вашей программы, которая в процентах может сравнивать строки. FuzzyWuzzy предоставляет готовое и лёгкое решение.
В первом примере кода на картинке с помощью
fuzz.ratio мы сравниваем две строки и получаем ответ 83, означающий, что они совпадают на 83%. Если у вас есть список строк, и совпадения необходимо искать во всех строках, FuzzyWuzzy поможет выделить наиболее похожие. Это мы и делаем во втором примере, сравнивая строки
data visualisation и custom behavior со строками из arr. При этом в функцию process.extract в качестве параметра также передаётся limit, задающий, сколько значений мы хотим получить.