Разъяснивший Python
8.18K subscribers
2.43K photos
40 videos
30 files
2.28K links
Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

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

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
Автоматизированное тестирование API с использованием Python. Работа с JSON и JsonPath

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

Читать...

Разъяснивший Python
Кэширование медленных функций с @lru_cache

Если у тебя есть тяжёлая или часто вызываемая функция с одними и теми же аргументами — можешь ускорить её с помощью встроенного декоратора lru_cache.

Итог :
@lru_cache — простой способ кешировать результат функции и избежать повторных вычислений. Особенно полезен в задачах с рекурсией, API-запросами или обработкой данных.

Разъяснивший Python
7 ошибок новичков в Python, которые нужно исключить

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

Смотреть...

Разъяснивший Python
Нейросети на PyTorch: Тригонометрические и статистические функции

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

Смотреть...

Разъяснивший Python
Удаление дубликатов при сохранении порядка

Обычно set() убирает дубликаты, но не сохраняет порядок.

dict.fromkeys() создаёт словарь, где ключи — элементы списка (они уникальны), и при этом сохраняет порядок добавления (с Python 3.7+).

Итог:
Чтобы быстро убрать дубликаты и сохранить порядок, используй list(dict.fromkeys(...)). Эффективно и элегантно.

Разъяснивший Python
Очистка текста с помощью str.translate и str.maketrans

Когда нужно быстро удалить нежелательные символы (например, знаки препинания) из строки, не нужно писать цикл — str.translate делает это мгновенно.

Итог:
Сочетание str.translate и str.maketrans — суперэффективный способ удаления символов из строки без регулярных выражений. Удобно, читаемо и быстро!

Разъяснивший Python
Бонусный прием

В PEP 654 были объявлены группы исключений (Exception Groups): они позволяют заложить в одну строку except сразу несколько типов ошибок.

Если исследовать типы ошибок нет времени, можно на скорую руку заложить в такую группу все популярные ошибки и обернуть блоком try — except всю программу.

Разъяснивший Python
1
Безопасная подстановка значений в SQL — не через f-строки!

Никогда не вставляй пользовательские данные напрямую в SQL-запросы. Используй параметризацию — это защищает от SQL-инъекций и делает код надёжнее.

Разъяснивший Python
💯1
Как реализовать анти-спам бота?

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

Читать...

Разъяснивший Python
Атрибуты класса и атрибуты экземпляра (ч.1)

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

Разъяснивший Python
Атрибуты класса и атрибуты экземпляра (ч.2)

+= Оператор изменяет изменяемый объект на месте, не создавая новый объект. Таким образом, изменение атрибута одного экземпляра влияет на другие экземпляры, а также на атрибут class.

Разъяснивший Python
Уступая от ... return! (ч.1)

Куда "wtf" делся? Это из-за какого-то особого эффекта yield from?

Начиная с Python 3.3, стало возможным использовать return инструкцию со значениями внутри генераторов (см. PEP380). В официальных документах говорится, что,
"... return expr в генераторе возникают причины StopIteration(expr), которые возникают при выходе из генератора".

Разъяснивший Python
Уступая от ... return! (ч.2)

В случае с some_func(3), StopIteration возникает в начале из-за return заявления. StopIteration Исключение автоматически перехватывается внутри list(...) оболочки и for цикла. Следовательно, два приведенных выше фрагмента приводят к пустому списку.

Чтобы получить ["wtf"] от генератора some_func, нам нужно перехватить StopIteration исключение.

Разъяснивший Python
Условное присваивание с оператором or

Иногда нужно задать значение по умолчанию, если переменная пуста или None. Вместо длинной конструкции if, можно использовать короткий трюк.

Итог:
Оператор or — удобный способ задать значение по умолчанию, когда переменная может быть пустой, None, 0 или ''. Упрощает код и делает его чище.

Разъяснивший Python
Nan-рефлексивность (ч.1)

'inf' и 'nan' - это специальные строки (без учета регистра), которые при явном приведении к float типу используются для представления математической "бесконечности" и "не числа" соответственно.

Поскольку, согласно стандартам IEEE NaN != NaN, соблюдение этого правила нарушает предположение о рефлексивности элемента коллекции в Python, т. Е. если x является частью коллекции, подобной list, реализации, подобные comparison, основаны на предположении, что x == x.

Разъяснивший Python
Используй enumerate вместо счётчиков вручную

Когда нужно одновременно итерироваться по элементам и знать их индекс — не нужно делать это вручную!

Итог:
enumerate — твой друг при работе с индексами в цикле. Это Pythonic и избавляет от лишнего кода.

Разъяснивший Python
Распаковка словаря в аргументы функции

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

data автоматически распакует ключи словаря как имена аргументов, а значения — как аргументы функции.

Итог:
Когда у тебя есть словарь с нужными данными, не передавай каждый параметр вручную — просто используй
. Это сокращает код и повышает читаемость.

Разъяснивший Python
Nan-рефлексивность (ч.2)

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

Поскольку идентификаторы x и y различны, учитываются значения, которые также различны; следовательно, сравнение возвращается False на этот раз.

Разъяснивший Python
Быстрая проверка времени выполнения с timeit

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

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

Итог:
timeit — отличный инструмент для быстрой и точной оценки производительности. Удобен для сравнений разных реализаций алгоритмов и оптимизаций.

Разъяснивший Python