Простой 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
Нереализованное поведение

Если твой класс не реализует конкретный перегруженный оператор для предоставленных типов аргументов, он должен возвращать 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 используется для присоединения этих исполняемых файлов к предустановленным типам браузеров для будущего использования, обычно при использовании нескольких типов браузеров.

#практика
Проверка исключения

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

#практика
👍1
Шаблоны проектирования

#теория
👍1