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

Ссылка: @Portal_v_IT

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

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
dataclasses.astuple()

dataclasses.astuple() преобразует объект dataclass в неизменяемый кортеж, что удобно для сериализации и работы с неизменяемыми структурами.

Разъяснивший Python
Глобально уникальный идентификатор в Python

Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).

Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.

Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.

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

Разъяснивший Python
Антипаттерн недели: Ловушка с оператором is при сравнении строк

В Python оператор is проверяет, ссылаются ли две переменные на один и тот же объект в памяти, а не равны ли их значения. Это может приводить к неожиданным ошибкам при сравнении строк.

Используйте == для сравнения значений строк, а не is.

Разъяснивший Python
Создание самоуничтожающегося Python-скрипта!

Этот код удаляет себя после выполнения, оставляя систему без следов!

Как это работает?
Скрипт выполняет свои задачи.
Определяет своё местоположение в файловой системе.
Удаляет себя после выполнения.

Где это можно использовать?
Создание временных скриптов для автоматизации.
Тестирование файлов без необходимости ручного удаления.
Написание скриптов-«призраков», которые исчезают после работы.

Разъяснивший Python
❤‍🔥1
sys._current_frames()

sys._current_frames() позволяет получить стеки вызовов всех активных потоков в программе. Это полезно для отладки многопоточных приложений.

Разъяснивший Python
inspect.getgeneratorstate()

inspect.getgeneratorstate() позволяет определить текущее состояние генератора. Это полезно при отладке и анализе работы генераторов в Python, чтобы понимать, активен ли генератор, завершён или ожидает ввода.

Разъяснивший Python
sys.setswitchinterval()

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

Разъяснивший Python
inspect.currentframe()

inspect.currentframe() позволяет получить текущий стек вызовов и информацию о выполняемом коде. Это полезно для отладки, логирования и анализа исполнения программы.

Разъяснивший Python
Объединение списков без цикла

Как бы вы решили задачу объединения списков разной длины без обхода элементов цикла?

Пусть и менее краткий, но более эффективный способ – применение модуля itertools

Заметим, что при работе с последовательностями многие полезные решения находятся в модулях стандартной библиотеки collections (контейнерные структуры данных) и itertools (операции над последовательностями). Внимательное прочтение документации модулей освободит вас от многих часов придумывания собственных «велосипедов».

Разъяснивший Python
Запускаем код, спрятанный в изображении!

Этот лайфхак позволяет прятать Python-код в PNG-картинке и запускать его прямо из неё!

Как это работает?
Берём картинку и вписываем код в её пиксели, меняя последний бит цвета.
Сохраняем картинку, которая выглядит как обычное изображение.
Читаем картинку, достаём скрытый код и запускаем его!
Где это можно использовать?
Передача скрытых скриптов через изображения.
Прятать код в файлах для креативного программирования.
Эксперименты с техникой стеганографии.

Разъяснивший Python
types.new_class()

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

Разъяснивший Python
asyncio.gather()

Метод asyncio.gather() из модуля asyncio позволяет запускать несколько асинхронных задач одновременно и ожидать их завершения. Это удобный инструмент для работы с конкурентным выполнением задач.

Разъяснивший Python
signal.set_wakeup_fd()

signal.set_wakeup_fd() позволяет отправлять сигналы в файловый дескриптор вместо стандартного обработчика сигналов. Это полезно для обработки сигналов в асинхронных приложениях.

Разъяснивший Python
Создаём "невидимый" Python-код!

Этот трюк позволяет прятать код в пустом файле, используя символы-заполнители, которые Python всё равно понимает!

Как это работает?
В начале кода вставлены невидимые символы Zero-Width Space (\u200B) и Zero-Width Non-Joiner (\u200C).
Python игнорирует эти символы, но они мешают текстовому редактору определить, что в файле что-то есть.
В итоге код выглядит пустым, но выполняется!

Где это можно использовать?
Шутки над коллегами — код как будто не существует, но выполняется.
Скрытие "пасхалок" в проектах.
Креативные соревнования по написанию странного кода.

Разъяснивший Python
🔥3
rich.print()

rich.print() — это удобный способ красиво выводить текст, таблицы и логи в терминал с поддержкой цветного форматирования. Библиотека rich делает консольные приложения более читаемыми и наглядными.

Разъяснивший Python
👍4
sys.call_tracing()

sys.call_tracing() позволяет выполнить функцию с заданными аргументами, включая трассировку вызовов, установленную через sys.settrace(). Это полезно для профилирования и отладки.

Разъяснивший Python
1
Анализ логов серверов

Данный код позволяет автоматически анализировать логи веб-серверов (например, Nginx, Apache). Ты сможешь выявлять подозрительные IP-адреса, DDoS-атаки, ошибки 500 и другие аномалии с помощью машинного обучения.

Ссылка на код

Разъяснивший Python
pathlib.Path.exists()

Метод pathlib.Path.exists() используется для проверки существования файла или директории. Это удобный способ работы с файловой системой в Python.

Разъяснивший Python
Запускаем Python-код… без Python!

Этот трюк позволяет выполнить Python-код, даже если интерпретатор Python не установлен в системе!

Как это работает?
Запрос отправляется на сервер с Python.
Сервер выполняет код и возвращает результат.
Ответ выводится в консоль браузера.

Где это можно использовать?
Когда на ПК нет Python, а код запустить нужно.
Быстрая проверка Python-кода прямо в браузере.
Создание веб-приложений с серверной логикой на Python.

Разъяснивший Python
🔥1
Mypy — инструмент для статической типизации Python-кода, который помогает находить ошибки ещё до запуска программы. Теперь Python становится чуть ближе к строгим языкам, как Java или C#, но при этом остаётся таким же гибким!

Что даёт Mypy?

Ловит ошибки типов на этапе написания кода;
Улучшает читаемость за счёт явных аннотаций;
Работает без потерь в скорости (Python остаётся динамическим!);
Интегрируется с редакторами и CI/CD.

Установка:

$ pip install mypy


Пример использования:

def add(x: int, y: int) -> int:
return x + y

print(add(5, 3))
print(add("5", 3)) # ОШИБКА! Mypy это увидит.


Как проверить код?

$ mypy script.py


Если в коде есть ошибки типов, Mypy сразу их покажет и поможет избежать багов!

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

GitHub/Инструкция

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