Простой 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
Модуль 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, чтобы включить все значения из рекурсивного вызова в «сглаженный» результат.

#практика
Генератор: отправка объектов

С помощью метода send() ты можешь отправить объект генератору. При первом вызове next(generator) программа переходит к первому оператору yield и возвращает значение total в этой точке, равное 0. В этой точке выполнение генератора приостанавливается. Когда ты вызываешь generator.send(x), интерпретатор берет аргумент x и делает его возвращаемым значением последнего оператора yield, которому присваивается значение. Затем генератор работает как обычно, пока не выдаст следующее значение. При вызове next(generator) генератор останавливается.

#практика
twinx()

В этом примере мы построим синусоидальную кривую и гиперболическую синусоиду на одном графике с общей осью x и разными осью y. Это достигается с помощью команды twinx(). Аналогично можно сделать график с общей осью y с помощью twiny().

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

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

#практика
Открытие URL в разных браузерах

Модуль webbrowser поддерживает различные браузеры, используя методы register() и get(). Метод get используется для создания контроллера браузера с использованием пути к определенному исполняемому файлу. Метод register используется для присоединения этих исполняемых файлов к предустановленным типам браузеров для будущего использования, обычно при использовании нескольких типов браузеров.

#практика