Гайды по Python | Программирование
17.7K subscribers
4.01K photos
6 videos
3.99K links
🐍 Полезные подсказки для Python-разработчиков

Ссылка: @Portal_v_IT

Сотрудничество, авторский права: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/pythonguide_it

РКН: clck.ru/3MnbFr
Download Telegram
Расширение возможности операции побитового исключающего "или" для пользовательских объектов

Метод rxor в Python используется для реализации операции побитового исключающего "или" (оператора ^), когда операнд слева не поддерживает соответствующий метод xor. Этот метод полезен для работы с пользовательскими объектами, когда требуется поддерживать операцию побитового исключающего "или" с различными типами данных.

Рассмотрим пример, в котором у нас есть класс, представляющий пользовательские битовые данные, и мы хотим поддерживать операцию побитового исключающего "или" как с обычными числами Python (int), так и с другими экземплярами нашего класса.

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

#theory | Гайды по Python
Blueprints for text analytics using Python

#book | Гайды по Python
Сравнение быстродействия def и lambda-функций Python. Производные функции

Иными словами — функция второго уровня вложенности служит для многократного вызова и создания во время каждого функции третьего уровня вложенности.

#theory | Гайды по Python
Сравнение быстродействия def и lambda-функций Python. Производные функции

А производная для функции построения графика — это же самая функция с определенными аргументами.

Мы будем проверять скорость создания и скорость выполнения разного вида функций.

Вернёмся к первому. В случае проверки скорости создания функции, функция_для_замера() будет иметь одну цель — создать внутри себя def или lambda функцию. Её мы будем вызывать множество раз, и каждый раз она будет создавать одну и ту же функцию заново.

#theory | Гайды по Python
Сравнение быстродействия def и lambda-функций Python. Общие функции

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

Для самого измерения мы будем использовать разницу во времени между началом выполнения и концом.

#theory | Гайды по Python
Конкатенация строк

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

Более эффективный подход к решению этой задачи заключается в использовании функции join()

#theory | Гайды по Python
Настраиваемый логгер-декоратор

Начнем с примера использования. Так мы не перегружаем внимание внутренней сложностью и повышаем шансы создать удачный интерфейс модуля. На этом принципе основана разработка через тестирование — test-driven development (TTD).

У класса Logger есть метод log_msg(), который можно использовать напрямую внутри функций.

#theory | Гайды по Python
Анатомия декоратора в Python

Создадим декоратор @hello_decorator.

Декоратор в Python — функция, которая принимает функцию/класс и возвращает функцию/класс. В примере декоратор hello_decorator() принимает функцию f(), и возвращает функцию wrapper().

#theory | Гайды по Python
2
Сложение списков

Не всегда операторы в python ведут себя так, как мы привыкли. Например сложение списков.

Как видно, инструкция 28 в случае + простое сложение, а в случае += — сложение на месте, которое не приводит к созданию нового списка. += в данном случае сопоставим по производительности с list.extend.

#theory | Гайды по Python
Генераторные фунции

Если предикатов фильтрации или обработчиков элементов списка много, то удобнее использовать генераторы. Они могут не дать прироста скорости, но помогут сэкономить память.

Генераторной фунцией в python называется функция, которая ведет себя как итератор. Для определения генераторной функции нужно использовать ключевое слово yield.

#theory | Гайды по Python
Криптография и взлом шифров на Python

#book | Гайды по Python
Генераторные выражения

Попробуем использовать генераторные выражения (для получения среза будем использовать функцию islice из itertools, которая возвращает итератор по срезу)

Итог: увеличение производительности более чем в 3 раза.

#theory | Гайды по Python
Россия на грани самого большого кризиса с начала 90-х.

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

Умному человеку очевидно, что нужно готовиться к большим переменам. Большинство окажутся к ним не готовы и потеряют всё. Пережить кризис и заработать на нем поможет канал Сергея Романова.


Он первым предсказал падение доллара в 2025, разгон инфляции и недавнее падение криптовалют

А сейчас по фактам объясняет, к чему нам готовиться в 2026 году, что будет с недвижкой и рублём (спойлер: ничего хорошего), как сохранить свои сбережения и когда действительно закончится кризис.

Подписывайтесь, чтобы быть в курсе всех инсайдов заранее:
@ROMANOV
Списковые включения

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

Например у нас есть большой список словарей (объявления контекстной рекламы). Зададим начальное время выборки и конечное.

И попробуем выбрать все объявления, ставка которых выше 600 и дата попадает в выбранный интервал. Затем возьмем первые 1000 элементов полученного списка.

Как видим этот метод работает быстрее.

#theory | Гайды по Python
Помощники при работе с циклами

#theory | Гайды по Python
Однострочный условный оператор (тернарный оператор)

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

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

#theory | Гайды по Python
Сравнение быстродействия def и lambda-функций Python. Производные функции

А производная для функции построения графика — это же самая функция с определенными аргументами.

Мы будем проверять скорость создания и скорость выполнения разного вида функций.

Вернёмся к первому. В случае проверки скорости создания функции, функция_для_замера() будет иметь одну цель — создать внутри себя def или lambda функцию. Её мы будем вызывать множество раз, и каждый раз она будет создавать одну и ту же функцию заново.

#theory | Гайды по Python
1