Python tricks | Хитрости Питона
5.74K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Оператор морж (:=) или способ записывать данные в переменную о котором вы не знали

Начиная с Python 3.8, появился новый синтаксис под названием «оператор морж» или walrus operator, который может присваивать значения переменным как часть более крупного выражения.

Оператор := получил свое милое название из-за глаз и бивней моржа.

🔗 Python tricks
Избегайте вложенных циклов с помощью product

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

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

🔗 Python tricks
Модуль warnings

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

Модуль warnings полезен, когда необходимо предупредить пользователя о каком-либо условии в программе и это условие не требует создания исключения и завершения программы.

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

🔗 Python tricks
Как работает хэш-таблица?

Хэш-таблица в Python реализована в виде словаря (dict). Вот как это работает:

— Хэширование ключей: Когда вы добавляете пару ключ-значение в словарь, Python сначала вычисляет хэш-код ключа с помощью встроенной функции hash(). Хэш-код - это целое число, представляющее "отпечаток" ключа.

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

— Поиск значения: При поиске значения по ключу Python сначала вычисляет хэш-код ключа и затем использует его для определения соответствующей "ячейки" в хэш-таблице. Затем происходит поиск значения внутри этой "ячейки" (или цепочки).

🔗 Python tricks
collections.Counter

collections.Counter — это специальный класс, предоставляющий удобный способ подсчета хэшируемых объектов. Он является подклассом словаря и предоставляет функциональность для подсчета количества вхождений каждого элемента в последовательность (список, кортеж, строку и т.д.).

🔗 Python tricks
Используем * для мерджа списка, кортежа и множества в одну строчку

Для того, чтобы это сделать самый элегантный способ - использование *

Звездочки можно использовать в качестве префиксов для распаковки их элементов. Но помимо распаковки, звездочки также можно использовать для деструктуризации присваиваний в Python.
🔗 Python tricks
Самый легкий способ мерджить словари

Слияние словарей - частое действие в программировании на Python. Существует множество способов сделать это. Но все они были уродливы до версии Python 3.9.

Начиная с Python 3.9, мы наконец-то получили самый элегантный способ объединения словарей - использование операторов объединения.

🔗 Python tricks
os.rename()

В Python функция os.rename() используется для переименования файла или директории в операционной системе. Она входит в модуль os.

🔗 Python tricks
Duck typing

Duck typing — это парадигма в программировании, используемая в языках с динамической типизацией, таких как Python. Суть duck typing заключается в том, что тип объекта определяется его поведением (методами и свойствами), а не явно указанным интерфейсом или базовым классом.

В Python duck typing часто выражается фразой: «Если это выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка.»

🔗 Python tricks
Forwarded from Wylsacom Red (Randomize Bot 🎲 [Рандомайзер])
⚡️Мегарозыгрыш призов! Разыгрываем два MacBook Pro 14’’ Space Gray на M3, два iPhone 15 Pro Max 256 ГБ цвета Black Titan и Natural Titan, два Oculus Quest 3.

Для участия нужно:

• подписаться на @whackdoor;
• подписаться на @wylsared;
• нажать кнопку «Участвую».

Итоги конкурса подведёт бот 5 декабря в 19:00, он выберет победителей. Порядок победителей будет такой: первое имя — MacBook Pro 14, второе — MacBook Pro 14, третье — iPhone 15 Pro Max 256 ГБ Natural Titan, четвёртое — iPhone 15 Pro Max 256 ГБ Black Titan, пятое и шестое — Oculus Quest 3.

Приз отправляем за наш счёт по РФ, Беларуси и Казахстану. Всем удачи!

⚠️ Если кнопка подвисла — не переживайте, вас все равно зарегистрирует, просто выполните условия и нажмите «Участвовать».
igraph

igraph — это библиотека для работы с графами (сетями) в Python. Она предоставляет инструменты для создания, анализа и визуализации графов. Если у вас нет установленной библиотеки igraph, вы можете установить её с помощью pip:

pip install python-igraph

Более подробную информацию о igraph и его возможностях можно найти в официальной документации.

🔗 Python tricks
Используем встроенные функции в Python для написания стандартной логики (ч.1)

В Python есть несколько встроенных функций, которые помогают при написании некоторых стандартных логических операций.

Например, функция map() - известная и часто используемая функция. Она получает два параметра, один из которых - функция, а другой - итератор. При выполнении функции map функция применяется к каждому элементу в итераторе.
🔗 Python tricks
Используем встроенные функции в Python для написания стандартной логики
(ч.2)

Как показано в примере выше, с помощью функции map() мы можем избежать написания цикла for для выделения заглавными буквами каждого слова в списке имен.

Другая известная функция - reduce(). Как следует из ее названия, она применяет функцию к итератору и выполняет для нее операцию reduce.
🔗 Python tricks
Работа с регистрами

Строки в Python имеют свойство регистра — прописные и строчные буквы считаются разными символами.

Для преобразования регистра используются методы строк:
str.upper() — преобразует строку к верхнему регистру.
str.lower() — преобразует строку к нижнему регистру.
str.swapcase() — меняет регистр каждого символа на противоположный.
str.capitalize() — делает первую букву заглавной, остальные строчными.

Регистр конкретного символа можно проверить в строке методами:
str.isupper() — проверка на заглавный регистр.
str.islower() — проверка на строчный регистр.

Регистр важно учитывать при сравнении строк на равенство.

🔗 Python tricks
Класс Process

Process — это класс для создания и управления отдельными процессами из модуля multiprocessing.
Создание процесса выполняется конструктором Process, передавая целевую функцию и аргументы.

При создании процессов нужно учитывать:
— Ограничения на доступ к данным между процессами.
— Синхронизацию процессов при необходимости.

🔗 Python tricks
Декоратор override

@override используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.

Это может быть полезно для:

— Повышения читабельности кода, так как сразу видно, какие методы переопределены.

— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.

— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.
🔗 Python tricks
set.difference update

Метод difference update() вычисляет разницу между двумя множествами (A – B). В результате множество A обновляется полученным множеством. В данном примере продемонстрировано применение метода.

🔗 Python tricks
Подсчет количества элементов

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

🔗 Python tricks
Наиболее частый элемент в списке

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

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

🔗 Python tricks
Frozenset

frozensets используются для создания неизменяемых множеств.

Основные особенности frozensets:

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

Здесь мы создали frozenset с элементами. Попытка добавить элемент вызывает ошибку, так как frozensets неизменяемы. Затем frozenset используется как ключ в словаре.

🔗 Python tricks
Библиотека setuptools

Библиотека setuptools предназначена для создания и распространения пакетов Python.

Она позволяет:
— Упростить установку пакетов с помощью команды pip install.
— Описывать зависимости между пакетами.
— Автоматически собирать пакеты при установке.
— Загружать пакеты на PyPI для широкого распространения.

🔗 Python tricks