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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Метод isspace()

Метод isspace() проверяет, является ли символ пробельным.

Пробельными символами считаются:
— Пробел (' ').
— Табуляция ('\t').
— Перевод строки ('\n').
— Перевод каретки ('\r').
— Прочие unicode символы, определяемые как пробелы.

isspace() возвращает True, если символ пробельный, и False в противном случае.
Этот метод удобно использовать для проверки и обработки строк.

🔗 Python tricks
collections.Counter

Collections.Counter — это класс, предназначенный для подсчета хешей (hashable объектов).
Он позволяет удобно и эффективно подсчитывать вхождения элементов в какой-либо последовательности.

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

Основные способы использования Counter:
— Подсчет слов или букв в тексте.
— Подсчет появления элементов в списке или итераторе.
— Нахождение наиболее часто встречающихся элементов.
— Использование при решении задач на вероятность и статистику.

🔗 Python tricks
collections.MutableMapping

Collections.MutableMapping — это интерфейс, который представляет изменяемое отображение (словарь).
Он наследуется от интерфейса Mapping и добавляет методы для изменения отображения, такие как __setitem__, __delitem__ и clear.

Основное преимущество в использовании MutableMapping — это возможность передавать экземпляры такого класса в любое API, ожидающее словарь.
Например, во многих функциях в стандартной библиотеке есть параметры типа dict. Если создать класс, реализующий MutableMapping, его экземпляры можно будет передавать в такие функции.

🔗 Python tricks
Выход пользователя из профиля на Django

Пользователь успешно прошел процедуру аутентификации, но… как теперь выйти? Можно было бы зайти в админку и выйти оттуда, однако есть способ получше. Добавим ссылку выхода, которая будет перенаправлять человека на домашнюю страницу. Благодаря системе аутентификации Django, добиться такого сценария проще простого.

В файле шаблона base.html добавим ссылку {% url 'logout' %} для выхода сразу после приветствия пользователя.

🔗 Python tricks
Резюме статьи

Gensim — отличный пакет Python для большого количества задач нейролингвистического программирования (НЛП). Он включает в себя довольно надежную функцию резюмирования, которой достаточно легко пользоваться. Она реализует разновидность алгоритма TextRank.

Для использования этой функции нам нужна лишь одна строчка кода

🔗 Python tricks
Потребление памяти при сортировке в Python

Сначала сравним, сколько памяти потребляет каждая из функций. Для отслеживания максимального использования памяти, используем встроенный модуль resource. Так как данный модуль позволяет отслеживать использование памяти для одного потока, мы запускаем сортировку списка в отдельном потоке. Также можно использовать FunctionSniffingClass, включенный в репозитории.

🔗 Python tricks
List и Tuple — зачем нужны и какие отличия

List
и Tupleэто два основных типа данных для хранения последовательностей.

List (список) — изменяемый тип данных, можно добавлять, удалять и изменять элементы.
Tuple (кортеж) — неизменяемый тип данных, элементы нельзя изменить после создания.

Основные отличия:
- Списки изменяемые, кортежи - нет;
- Списки удобнее для добавления/удаления элементов;
- Кортежи более эффективны по памяти и быстрее для доступа к элементам.

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

🔗 Python tricks
Дан целочисленный массив nums, вернуть [nums[i], nums[j], nums[k]] такие, что nums[i] + nums[j] + nums[k] == 0.

В нашем решении сначала список nums сортируется. Затем перебираются все возможные комбинации индексов i, j и k. Их сумма проверяется на равенство target и добавляется в результирующий сет, если равна.

🔗 Python tricks
Mypy

Mypy
это статический анализатор типов для Python. Он позволяет добавить статическую типизацию в Python и выявлять ошибки, связанные с типами, на этапе компиляции.

Для использования Mypy нужно аннотировать переменные специальным синтаксисом, в примере мы указали, что функция sum_list принимает список целых чисел и возвращает целое число.

После запуска, если типы не совпадают, Mypy выдаст ошибку, как показано в примере.

🔗 Python tricks
MongoDB: Find

В MongoDB ты можешь использовать методы find() и find one() для поиска данных в коллекции. Точно так же, как оператор SELECT используется для поиска данных в таблице базы данных MySQL. Метод find one() возвращает первое вхождение в выборке. Метод find() возвращает все вхождения в выборке.

🔗 Python tricks
Потребление памяти при сортировке в Python

Сначала сравним, сколько памяти потребляет каждая из функций. Для отслеживания максимального использования памяти, используем встроенный модуль resource. Так как данный модуль позволяет отслеживать использование памяти для одного потока, мы запускаем сортировку списка в отдельном потоке. Также можно использовать FunctionSniffingClass, включенный в репозитории.

🔗 Python tricks
Использование тернарного оператора для компактных условий

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

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

🔗 Python tricks
Использование списка включений (list comprehension) для фильтрации и трансформации данных

Списки включений (list comprehension) позволяют быстро и лаконично создавать новые списки на основе существующих, применяя фильтрацию и трансформацию данных в одной строке. Это полезно для оптимизации кода, который требует создания новых списков по определённым условиям.

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

🔗 Python tricks
Использование метода get() для безопасного доступа к значениям словаря

При работе со словарями (dict) в Python, иногда нужно получить значение по ключу, который может отсутствовать. Вместо того чтобы проверять наличие ключа с помощью условия if, можно использовать метод get(), который возвращает значение по ключу, или значение по умолчанию, если ключа нет.

Использование метода get() позволяет избежать ошибок при работе с отсутствующими ключами и сделать код более чистым и удобным.

🔗 Python tricks
Использование zip() для одновременной итерации по нескольким спискам

Функция zip() позволяет одновременно перебирать несколько списков в Python, что удобно, когда нужно работать с несколькими последовательностями одинаковой длины. Это позволяет избежать использования индексов и делает код более читаемым.

Использование zip() — это быстрый и удобный способ параллельной обработки нескольких списков, который помогает сделать код проще и аккуратнее.

🔗 Python tricks
Настраиваемый логгер-декоратор

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

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

🔗 Python tricks
Анатомия декоратора в Python

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

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

🔗 Python tricks
🔴 Тестовый собес на Middle Python с разработчиком из Яндекса завтра вечером! 
[+ разбор 50 сложных вопросов в подарок ]

23 сентября (уже завтра) в 19:00 по мск
приходи онлайн, чтобы посмотреть на настоящее интервью на Middle Python-разработчика!

Собеседование проведёт Хачатур Саркисян - ведущий разработчик из Яндекса.

Как это будет:

📂 Хачатур задаст разработчику вопросы и задачи, которые могут спросить на реальном собесе;

📂 После каждого ответа респондента ты услышишь подробный комментарий от ментора и поймёшь, чего на самом деле ожидает собеседующий на интервью;

📂 В конце сможешь задать любой вопрос Хачатуру и получить на него развёрнутый ответ.

Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

И ты можешь посмотреть его бесплатно 🔥
Только завтра, в прямом эфире!

🎁 Подарок для всех, кто зарегается на веб — файл с ОТВЕТАМИ НА 50 СЛОЖНЫХ ВОПРОСОВ с Python-собеседований 🔥

Переходи в бот, чтобы попасть на эфир и забрать подарок
👉 @shortcut_py_bot

Реклама.
О рекламодателе.
Сложение списков

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

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

🔗 Python tricks
Однострочный условный оператор (тернарный оператор)

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

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

🔗 Python tricks