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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Особые методы сравнения множеств (set, frozenset)

set_a.isdisjoint(set_b) — истина, если set_a и set_b не имеют общих элементов.

set_b.issubset(set_a) — если все элементы множества set_b принадлежат множеству set_a, то множество set_b целиком входит в множество set_a и является его подмножеством (set_b — подмножество)

set_a.issuperset(set_b) — соответственно, если условие выше справедливо, то set_a — надмножество
🔗 Python tricks
Метод .clear()

.clear() — метод изменяемых коллекций (список, словарь, множество), удаляющий из коллекции все элементы и превращающий её в пустую коллекцию.
🔗 Python tricks
Гайд по магическим методам сравнения

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

1. __cmp__(self, other)
Самый базовый из методов сравнения. Он, в действительности, определяет поведение для всех операторов сравнения (>, ==, !=), но не всегда так, как вам это нужно. __cmp__ должен вернуть отрицательное число, если self < other, ноль, если self == other, и положительное число в случае self > other.
2. __eq__(self, other)
Определяет поведение оператора равенства, ==.
3. __ne__(self, other)
Определяет поведение оператора неравенства, !=.
4. __lt__(self, other)
Определяет поведение оператора меньше, <.
5. __gt__(self, other)
Определяет поведение оператора больше, >.
6. __le__(self, other)
Определяет поведение оператора меньше или равно, <=.
7. __ge__(self, other)
Определяет поведение оператора больше или равно, >=.

🔗 Python tricks
Метод capitalize()

Метод capitalize() используется для преобразования первой буквы строки в заглавную (прописную) букву, а все остальные буквы в строке делаются строчными. Как видно из примера, метод capitalize() изменяет только первую букву строки на заглавную, оставляя все остальные буквы неизменными.

Заметьте, что метод capitalize() не изменяет оригинальную строку, а создает новую строку с изменениями. Если вы хотите изменить исходную строку, вы должны присвоить результат обратно этой переменной.

🔗 Python tricks
PyBrain

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

В этом примере мы создаем набор данных для классификации с двумя входными и тремя выходными значениями и добавляем данные в набор данных. Затем данные разделяются на обучающую и тестовую выборки и преобразуются для использования с PyBrain.
Далее создается нейронная сеть с двумя входными узлами, тремя скрытыми узлами и тремя выходными узлами и тренер для обучения сети. Сеть обучается в течение 100 эпох и выводится результат на обучающей и тестовой выборках.
🔗 Python tricks
Конвертация одного типа коллекции в другой

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

🔗 Python tricks
PySnooper

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

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

🔗 Python tricks
Списковые включения

Возможно где-то до этого ты уже мог слышать понятие «list comprehensions». Это такой способ уместить цикл for, блок if и присваивание в одну строку.

Начнем с простейшего примера. Допустим, нам снова надо возвести в квадрат все элементы списка.

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

Но, оказывается, можно писать проще и понятнее
🔗 Python tricks
Обмен значениями при помощи кортежей

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

В правой части инструкции присваивания последовательностей допускается указывать любые итерируемые объекты. Главное, чтобы число элементов слева равнялось числу элементов справа. Такое присваивание применяется и для сложных вложенных конструкций.
🔗 Python tricks
Удаление дубликатов в списке

Среди регулярно используемых трюков в Python – преобразование списка во множество и обратно в список для удаления повторяющихся элементов списка

Но множества – это неупорядоченные последовательности. Часто стоит задача сохранить порядок следования элементов. Для этого удобно воспользоваться типом данных OrderedDict из модуля collections

🔗 Python tricks
Особые методы сравнения множеств (set, frozenset)

set_a.isdisjoint(set_b) — истина, если set_a и set_b не имеют общих элементов.

set_b.issubset(set_a) — если все элементы множества set_b принадлежат множеству set_a, то множество set_b целиком входит в множество set_a и является его подмножеством (set_b — подмножество)

set_a.issuperset(set_b) — соответственно, если условие выше справедливо, то set_a — надмножество

🔗 Python tricks
Функции min(), max(), sum()

Функции min(), max() — поиск минимального и максимального элемента соответственно — работают не только для числовых, но и для строковых значений.

sum() — суммирование всех элементов, если они все числовые.
🔗 Python tricks
Возможная ошибка при обработке элементов

Не меняйте количество элементов коллекции в теле цикла во время итерации по этой же коллекции! — Это порождает не всегда очевидные на первый взгляд ошибки. Чтобы этого избежать подобных побочных эффектов, можно, например, итерировать копию коллекции.
🔗 Python tricks
Arrow

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

Вот некоторые из ключевых особенностей:

1. Arrow предоставляет различные способы создания объектов Arrow. Вы можете создать объект Arrow, представляющий текущее время, с использованием arrow.now(), или указать конкретную дату и время.
2. Для работы с датами вы можете выполнять арифметические операции, добавлять и вычитать дни, часы, минуты и другие временные интервалы.
3. Вы можете легко создавать объекты Arrow с указанием конкретной временной зоны и выполнять конвертацию между ними.
4. Arrow предоставляет метод format, который позволяет легко форматировать дату и время в строку в соответствии с заданным форматом.
5. Arrow позволяет представлять даты и время в словесном формате, типа «сегодня», «вчера» и «завтра».

🔗 Python tricks
Что такое %s?

%s — это специальное форматирующее поле, которое используется для вставки строковых значений в другие строки, а также для форматирования строк. Он является частью строкового форматирования, используемого в функциях print(), str.format(), и старом стиле форматирования с оператором %.

🔗 Python tricks
Изменение элемента списка по индексу (ч.1)

Поскольку кортежи и строки у нас неизменяемые коллекции, то по индексу мы можем только брать элементы, но не менять их

🔗 Python tricks
Изменение элемента списка по индексу (ч.2)

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

🔗 Python tricks
Mypy

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

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

Mypy выполняет проверку типов на основе аннотаций, проверяя код на соответствие указанным типам. Если обнаруживаются несоответствия, Mypy генерирует ошибки или предупреждения, указывая на место, где ошибка произошла.

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

🔗 Python tricks
LineaPy

LineaPy
это библиотека для работы с временными рядами и анализа временных данных.

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

В этом примере мы получили прогнозные значения временного ряда на 5 периодов вперед с помощью модели ARIMA из LineaPy за считанные строки кода.

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

astropy — это библиотека для астрономии и астрофизики на Python.
Она содержит функционал для работы с астрономическими данными в разных форматах, включая FITS, ASCII и VOTable.

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

аstropy легко расширяема — можно добавлять собственные пакеты для специфичных задач.
🔗 Python tricks