Простой 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
Настраиваемые классы

В 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.

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

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

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

Этот модуль определяет функции и классы, которые реализуют гибкую систему регистрации событий для приложений и библиотек. Ключевое преимуществом наличия API-интерфейса ведения журнала - все модули Python могут участвовать в ведении журнала. Таким образом журнал твоего приложения может включать твои собственные сообщения, интегрированные с сообщениями из сторонних модулей.

#практика
Получение данных по UDP

UDP — это протокол без установления соединения. Это означает, что одноранговые узлы, отправляющие сообщения, не требуют установления соединения перед отправкой сообщений. socket.recvfrom таким образом возвращает кортеж (msg [сообщение, полученное сокетом], addr [адрес отправителя]). По умолчанию сокеты блокируются. Это означает, что выполнение скрипта будет ждать, пока сокет не получит данные.

#практика
Magic/Dunder

Волшебные методы (также называемые dunder) в Python служат той же цели, что и
перегрузка операторов на других языках. Они позволяют классу определять свое поведение, когда он используется в качестве операнда в выражениях унарных или бинарных операторов. Они также служат реализациями, вызываемыми некоторыми встроенными функциями. В коде приведен пример реализации двумерных векторов.

#практика
Нереализованное поведение

Если твой класс не реализует конкретный перегруженный оператор для предоставленных типов аргументов, он должен возвращать NotImplemented. Это позволит Python вернуться к другим методам, чтобы заставить операцию работать. Например, при заданном x + y, если x.add(y) возвращает нереализованное значение, вместо него выполняется y.radd(x).

#практика
Переопределение

Когда ты наследуешь от класса со свойством, ты можешь предоставить новую реализацию для одной или нескольких функций свойств getters, setters или deleter свойств, ссылаясь на объект свойства в родительском классе. Также можешь добавить getter или setter там, где раньше их не было в базовом классе.

#практика
Ключевой аргумент

В Python возможно нахождение минимума/максимума последовательности последовательностей. Если ты хочешь сортировать по определенному элементу в каждой последовательности, используй ключевой аргумент. В коде показано, как это можно сделать с помощью лямбды и модуля operator.

#практика
functools total ordering

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

#практика
Минимум/максимум последовательности

Получение минимума последовательности эквивалентно доступу к первому элементу отсортированной последовательности. Максимум немного сложнее. sorted сохраняет порядок, а max возвращает первое встреченное значение. В случае отсутствия дубликатов максимальное значение совпадает с последним элементом отсортированного возврата. Это не так, если есть несколько элементов, которые оцениваются как имеющие максимальное значение.

#практика
😁1
Поиск вложенных последовательностей

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

#практика
reduce

Функция reduce уменьшает итерируемый объект, многократно применяя функцию к следующему элементу итерируемого объекта и совокупному результату на данный момент. В Python 2 эта функция доступна как встроенная. В Python 3 она перемещена в модуль functools.

#практика
Последовательность Фибоначчи

Практический вариант использования генератора — перебор значений бесконечного ряда. В данном коде приведен пример нахождения первых десяти членов последовательности Фибоначчи. Чтобы вывести другое количество членов последовательности, измени параметр range.

#практика
Выражения генератора

В Python можно создавать итераторы генератора, используя синтаксис, подобный comprehension. Если в функцию не обязательно должен передаваться список, ты можешь поместить выражение генератора внутри вызова функции. Это сократит количество символов, улучшит читаемость. Скобки из вызова функции неявно делают твое выражение выражением генератора.

#практика
👍3
Создание нескольких графиков

В данном примере кривые синуса и косинуса строятся на одном и том же рисунке с помощью наложения графиков. Мы используем отдельные команды для построения графиков. Это можно использовать для получения отдельных дескрипторов для каждого графика.

#практика
Рефакторинг кода построения списка

Предположим, у тебя есть сложный код, который создает и возвращает список. Начинает он с пустого списка и многократно добавляет к нему значения. Вместо того чтобы нецелесообразно заменять внутреннюю логику представлением списка, ты можешь превратить всю функцию в генератор на месте, а затем собрать результаты. Если логика является рекурсивной, используй yield from, чтобы включить все значения из рекурсивного вызова в «сглаженный» результат.

#практика