Простой 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
Создание рандомного пароля

Чтобы создать рандомный пароль, ты можешь воспользоваться символами, предоставленными в модуле string. punctuation отвечает за знаки пунктуации, ascii letters за буквы, digits – за цифры. После этого объединяем все символы в symbols. Используй random.SystemRandom для создания пароля. В данном примере его длина – 10 символов.

#практика
👍2
shuffle, choice, sample

Ты можешь использовать random.shuffle() для рандомизации элементов в изменяемой и индексируемой последовательности. Метод choice() произвольно выбирает элемент в последовательности. Если тебе нужно выбрать несколько элементов, используй sample().

#практика
👍6
Модуль mmap

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

#практика
Модуль pickle

Модуль pickle постоянно хранит данные в одном файле. Представление объекта всегда байтовое, поэтому для хранения данных необходимо открывать файлы в wb, для загрузки данных из pickle - в rb. Данные могут быть любого типа.

#практика
🔥3
Matplotlib

Библиотека matplotlib позволяет строить графики в стиле MATLAB. В данном примере продемонстрирован базовый функционал: постройка графика, отображение ключевых точек, смена цвета, наименование графика и его осей.

#практика
🔥4
Перехват нескольких исключений

Если ты хочешь обрабатывать разные исключения по-разному, ты можешь предоставить отдельный блок исключений для каждого типа. В этом примере мы перехватываем KeyError и AttributeError, но обрабатываем исключения по-разному. Если же хочешь обрабатывать разные исключения одинаково, объедини их в один except.

#практика
👍2🔥1
Модуль 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, который упрощает и расширяет настройку класса без использования метаклассов. Это позволяет создавать простые плагины. Таким образом уменьшается вероятность конфликтов метаклассов, упрощает наследование.

#практика