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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
​​Улучшение читаемости больших чисел

Вы можете разделять цифры знаком подчеркивания. Это сделает большое число более читаемым, в то время как математически это не повлияет на синтаксис, поэтому вы по-прежнему можете выполнять арифметические операции как обычно:
​​Генерация перестановок для итерируемого объекта

Функция permutations модуля itertools возвращает итератор с последовательными перестановками из элементов входной последовательности iterable. Каждая комбинация заключена в кортеж с длинной r элементов.
Если r не указано или None, тогда по умолчанию r равна длине iterable и генерируются все возможные перестановки полной длины.
​​Улучшения в проверке типов в python 3.10

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

Кроме того, это простое улучшение не ограничивается только аннотациями типа, оно может применяться с функциями isinstance() и issubclass():
​​Синтаксис менеджера контекста в python 3.10

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

Иногда возникает необходимость поменять местами ключи со значениями в словаре. Для этого может пригодиться функция zip():
​​Алгоритм бинарного поиска числа в списке

Предположим, что вы ищите фамилию в телефонной книге. Она начинается с буквы "К". Конечно можно начать с самого начала и перелистывать каждую страницу в надежде рано или поздно наткнуться на нужную фамилию, но для более рационального поиска лучше раскрыть книгу на середине, ведь нужная нам буква находится где-то ближе к центру книги.
Перед нами типичная задача поиска. В данном случае для решения задачи можно применить алгоритм бинарного поиска.
Рассмотрим пример, как работает данный поиск. Сыграем в игру, я загадал число от 1 до 100 и вы должны его угадать. При каждой попытке вам будет известно больше ли или меньше моё загаданное число по отношению к названному вами. Вы можете начать перебирать все варианты (1, 2, 3, 4, ...) и в худшем случае вы отгадаете число за 99 попыток. Сложность данного аглоритма O(n). Бинарный поск выполняется со сложностью O(log n) и угадать число будет возможно всего за 7 попыток
​​Модуль copy - поверхностное и глубокое копирование объектов

Операция присваивания не копирует объект, он лишь создаёт ссылку на объект. Для изменяемых коллекций, или для коллекций, содержащих изменяемые элементы, часто необходима такая копия, чтобы её можно было изменить, не изменяя оригинал.

Модyль copy - один из вариантов копирования объекта. copy.copy(x) - возвращает поверхностную копию x.
copy.deepcopy(x) - возвращает полную копию x.

Поверхностная копия создает новый составной объект, и затем (по мере возможности) вставляет в него ссылки на объекты, находящиеся в оригинале.
Глубокая копия создает новый составной объект, и затем рекурсивно вставляет в него копии объектов, находящихся в оригинале.
This media is not supported in your browser
VIEW IN TELEGRAM
Нет идей для проектов? В моем втором канале Replit публикуются интересные приложения с готовым кодом.

Если еще нет коммерческого опыта, но нужно наполнить портфолио — подпишись. Тут проекты, написанные на разных языках программирования, которые ты сможешь повторить: приложения, сервисы, игры, боты и много чего ещё.
​​Получение наибольших или наименьших чисел из списка

Представим, что у вас есть список с числами и необходимо получить указанное число наибольших или наименьших чисел из него.
Одно из решений данной задачи - использование встроенной библиотеки heapq
​​Подсчет всех уникальных значений

Вы можете использовать метод Counter из библиотеки collections, чтобы получить словарь с подсчетом всех уникальных элементов в списке:
​​Просмотр всех методов и атрибутов объекта

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

Для увеличения читаемости при печати словаря из большого количества вложенных объектов может пригодиться модуль pprint
​​Wikipedia в Python 

Библиотека wikipedia позволяет взаимодействовать с Википедией не выходя из редактора, для этого установите модуль командой pip install wikipedia. Метод page позволит получить страницу по вашему запросу, а summary отдаст короткое содержание найденной статьи.
​​Выполнение строки как обычного python кода

В Python есть возможность динамически считывать строку и обрабатывать её как часть Python кода. Это достигается использованием функций eval() для вычисления выражений и exec() для выполнения операторов
​​Загрузка файлов из интернета

Один из простейших способов загрузить файлы в Python – через модуль wget, с которым вам не нужно открывать конечный файл. Метод download модуля wget загружает файлы в одну строчку. Метод принимает два параметра: URL путь к загружаемому файлу и локальный путь, где следует сохранить файл.
Для того, чтобы использовать wget, не забудьте выполнить команду pip install wget
​​Работа с массивами с помощью библиотеки NumPy

Данная библиотека считается одной из самых лучших и наиболее широко используемых библиотек Python для машинного обучения. Она очень интерактивна и интуитивно понятна. Данная библиотека помогает нам легко реализовывать сложные математические операции при работе с массивами.
Для того, чтобы установить библиотеку, выполните команду
pip install numpy
​​Дзен Python

Тим Петерс ещё в далёком 1999 году предложил PEP 20, который должен был содержать в себе 20 правил по написанию кода. Но в итоге их оказалось всего 19. 

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

Посмотреть Дзен, или же философию Python, можно с помощью импорта модуля this
​​Форматирование строк

f-строки (сокращение от format string) – это новейший метод из поддерживаемых Python 3. Они похожи на метод .format(). Однако они предоставляют более ёмкий способ сделать то же самое, всего лишь добавив к строке букву f в качестве префикса.
​​Проверка типа объекта

Функция isinstance() вернет True, если проверяемый объект object является экземпляром указанного класса или его подкласса.

Если объект object не является экземпляром данного типа, то функция всегда возвращает False.
​​Генерируем QR-код

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

Библиотека qrcode поможет нам в создании.
Для начала установите необходимые библиотеки командой pip install qrcode pillow