Простой Python | Программирование
141K subscribers
2.36K photos
48 videos
1.36K links
Заявки принимаются автоматически.
Лучший образовательный канал по Python.

По всем вопросам: @dimaa_dimaa (реклама)

Ссылка на канал: https://t.me/+T1i5nO0m_h01ZDky
.
РКН: https://vk.cc/cJ5box
Помощь:https://telega.in/c/+T1i5nO0m_h01ZDky
Download Telegram
Модуль shelve

Shelve — это модуль Python, используемый для хранения объектов в файле. Он реализует постоянное хранилище для произвольных объектов Python, которые можно преобразовать в поток байтов с помощью API, похожего на словарь. Модуль shelve можно использовать в качестве простого варианта постоянного хранилища для объектов Python, когда реляционная база данных будет лишней. Доступ к shelve осуществляется с помощью ключей, как и к словарю.

#практика
👍1
Вычисление больших целых корней

Несмотря на то, что Python изначально поддерживает большие целые числа, извлечение n-го корня из очень больших чисел может привести к ошибке. В таком случае стоит воспользоваться бинарным поиском. В коде приведен пример, как это сделать.

#практика
Корутины

Генераторы можно использовать для реализации корутин. Корутины обычно используются для реализации конечных автоматов. Они полезны для создания процедур с одним методом, которые требуют, чтобы состояние функционировало должным образом. Они работают с существующим состоянием и возвращают значение, полученное по завершении операции.

#практика
👍2
Хэширование файлов

Хэш — это функция, которая преобразует последовательность байтов переменной длины в последовательность фиксированной длины. Хеширование файлов может быть выгодным по многим причинам. Хэши можно использовать для проверки идентичности двух файлов или проверки того, что содержимое файла не было повреждено или изменено.

#практика
Модуль re: группировка

Группировка осуществляется с помощью скобок. Вызов group() возвращает строку, состоящую из соответствующих подгрупп в скобках. Можно передавать аргументы для получения конкретной группы. Если есть один аргумент, результатом будет одна строка; если имеется несколько аргументов, результатом является кортеж с одним элементом на аргумент. Вызов groups() возвращает список кортежей, содержащих подгруппы.

#практика
👍1
Проверка символов

С помощью модуля re ты можешь сделать проверку на допустимые символы. В данном примере мы разрешаем использование заглавных и прописных букв английского языка, цифры. При необходимости ты можешь адаптировать разрешенные символы. Например, выражение [^a-z0-9.] указывает на запрет заглавных букв.

#практика
contextlib.contextmanager

С помощью contextlib.contextmanager можно написать диспетчер контекста, используя синтаксис генератора. Если диспетчеру контекста необходимо обработать исключение, в генераторе может быть записан блок try..except..finally. Любое исключение, вызванное в блоке with, будет обрабатываться этим блоком исключений. Данный код выведет в столбик Enter, Dividing by cm = 0, Caught error, Cleaning up, Exit.

#практика
zip_longest

Когда ты используешь zip, zip перестанет объединять итерации, как только в одном из них закончатся элементы. Если другие итерации длиннее, лишние элементы просто выбрасываются. itertools zip longest продолжит итерацию после окончания более короткой из двух итераций. Тогда на месте пустых значений будет выводиться None.

#практика
nlargest/nsmallest

Для поиска некоторого количества (более одного) наибольших или наименьших значений итерации ты можешь использовать nlargest и nsmalest модуля heapq. Это намного эффективнее, чем сортировка всей итерации. Внутри эти функции используют структуру данных очереди приоритетов двоичной кучи, которая очень эффективна для этого примера.

#практика
Запуск двух процессов

Простым примером использования нескольких процессов могут быть два процесса, которые выполняются отдельно. В этом примере запускаются два процесса: countUp() отсчитывает единицу вверх каждую секунду, countdown() – единицу вниз каждую секунду.

#практика
👍4
Разделение состояния между потоками

Поскольку все потоки выполняются в одном процессе, все потоки имеют доступ к одним и тем же данным. Однако одновременный доступ к общим данным должен быть защищен блокировкой, чтобы избежать проблем с синхронизацией.

#практика
Pool

Пул — это класс, который управляет процессами. Pool(5) создает новый пул с 5 процессами. Метод pool map возвращает итератор. Он применяет функцию, предоставленную в качестве входных данных, к каждому элементу входного итерируемого объекта. Поэтому для параллельного выполнения функции с разными входными ты можешь использовать метод pool map(). Аналогичные результаты можно получить с помощью map async, apply и apply async.

#практика
Парсинг скобок

Стеки часто используются для парсинга. Простая задача - проверить, совпадают ли строки скобок. Например, строка ([]) совпадает, потому что внешние и внутренние скобки образуют пары. ()<>) не совпадают, потому что последний символ ) не имеет партнера. ([)] также не совпадают, потому что пары должны быть либо полностью внутри, либо вне других пар.

#практика
Настраиваемые классы

В Python 3.6 был добавлен специальный метод init subclass, который упрощает и расширяет настройку класса без использования метаклассов. Это позволяет создавать простые плагины. Таким образом уменьшается вероятность конфликтов метаклассов, упрощает наследование.

#практика
сonfigparser

Этот модуль предоставляет класс ConfigParser, который реализует базовый язык конфигурации в файлах INI. Ты можешь использовать это для написания программ Python, которые могут быть легко настроены пользователями. Файл конфигурации содержит разделы, каждый раздел содержит ключи и значения. Модуль configparser можно использовать для чтения и записи конфигурационных файлов.

#практика
Оптическое распознавание символов

Оптическое распознавание символов преобразует изображения текста в реальный текст. Python-tesseract – оболочка для Google Tesseract-OCR Engine. Этот инструмент также полезен в качестве автономного сценария вызова для tesseract, поскольку он может читать все типы изображений, включая jpeg, png, gif, bmp, tiff и другие.

#практика
Генерация RSA-подписей

RSA можно использовать для создания подписи сообщения. Действительная подпись может быть сгенерирована только при доступе к закрытому ключу RSA. Проверка возможна благодаря соответствующему открытому ключу. Поэтому, пока другая сторона знает твой открытый ключ, она может проверить, что сообщение подписано тобой и не изменено.

#практика
Исходный код объекта

Чтобы вывести исходный код объекта Python, используй inspect. Обрати внимание, что это не будет работать ни для встроенных объектов, ни для объектов, определенных в интерактивном режиме. Для этого тебе понадобятся другие методы. На картинке приведен пример, как вывести исходный код метода randint из модуля random.

#практика
Интроспекция

Интроспекция – это акт самоанализа. В компьютерном программировании самоанализ — это способность определять тип или свойства объектов во время выполнения. Интроспекция кода используется для изучения классов, методов, объектов, модулей, ключевых слов и получения информации о них, чтобы ты мог ее использовать.

#практика