Многие используют
with open(...)
, но не многие пишет свои контекстные менеджеры. А ведь это мощный инструмент для управления ресурсами, логирования, временных настроек и откатов.В этом посте:
• Покажем, как создать классический менеджер с enter и exit.
• Разберем декоратор contextmanager из contextlib.
• Напишем менеджер, который временно меняет рабочую директорию и возвращает всё обратно.
🔥 — если узнал что-то новое
🤝 — если уже писал кастомные менеджеры
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤9👍7🤝2
В этой статье:
• Пошаговое создание бота с пояснениями и примерами;
• Сравнение популярных библиотек — плюсы, минусы и советы по выбору;
• Полезные грабли и лайфхаки из реального опыта автора.
🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤13🔥10🤝1
Шпаргалка по ключевым декораторам и функциям модуля dataclasses, который упрощает создание классов с данными. Удобный способ автоматически генерировать методы, преобразовывать объекты в словари или кортежи, а также делать экземпляры неизменяемыми.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍12❤8😁1🤝1
Например,
GET
используется для получения данных, POST
— для создания новых записей, а DELETE
— для удаления.На картинке — 9 самых популярных методов HTTP-запросов, которые стоит держать под рукой каждому разработчику.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍8🤝5🔥2
Почему мой код тупит? Разберём по секундам
Когда проект растёт, даже простые функции могут тормозить.
Вместо гаданий — используем
Профилируем запуск, результат сразу в консоли:
вызовы, время, сортировка — всё по делу:
Хотим больше контроля? Сохраняем отчёт в файл и анализируем его позже:
🔥 Теперь ты сможешь увидеть, где реально тормозит код — никаких догадок, только цифры.
👉 Python Ready | #практика
Когда проект растёт, даже простые функции могут тормозить.
Вместо гаданий — используем
cProfile
. Он покажет, где именно проседает скорость:import cProfile
def main():
[x**2 for x in range(10**6)]
Профилируем запуск, результат сразу в консоли:
вызовы, время, сортировка — всё по делу:
if __name__ == "__main__":
cProfile.run("main()")
Хотим больше контроля? Сохраняем отчёт в файл и анализируем его позже:
import pstats
p = pstats.Stats("output.prof")
p.sort_stats("time").print_stats(5)
🔥 Теперь ты сможешь увидеть, где реально тормозит код — никаких догадок, только цифры.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍15🔥7🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Вводишь любую команду в терминале, и он по частям объясняет, что делает каждая часть. Не просто man-ка, а понятный синтакс-анализ.
Особенно кайф для тех, кто работает в
Linux/DevOps/CI
среде и хочет разбираться, а не наугад копипастить из StackOverflow
.Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍12🤝6🔥3
Сегодня разбираем методы поочередного и последовательного соединения итерируемых объектов:
•
zip()
— принимает две или более последовательности и поочередно складывает их элементы в кортежи и возвращает список кортежей•
chain()
— также принимает две коллекции и добавляет сначала элементы первой последовательности, а затем второй и возвращает единый список со всеми элементами переданных массивов🔥 — если узнал что-то новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48🤝10👍8❤7
Это практический курс по веб-разработке с использованием Flask — одного из самых лёгких и понятных фреймворков на Python. Пошагово разбираются маршруты, шаблоны, подключение БД и запуск на сервере.
Ссылочка на плейлист: YouTube🖤
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🤝9🔥8
При работе с API, формами или JSON-ответами часто получаем словари, в которых полно None, пустых строк, списков и вложенных пустых объектов. Задача — написать рекурсивную функцию, которая удаляет весь "мусор", но при этом сохраняет вложенность и структуру.
В этой задаче:
• Пишем универсальный фильтр для вложенных словарей
• Используем рекурсию для обработки любых уровней
• Проверяем значения на пустоту (None, "", [], {})
Это простое, но важное умение — делать данные чистыми и аккуратными, чтобы избежать багов и упростить дальнейшую работу с ними.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤29👍17🔥16🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Это инструмент для программного анализа и отладки бинарных файлов на Python, гораздо гибче, чем классический GDB.
Не просто библиотека, а фундамент для написания кастомных средств отладки, анализа и реверс-инжиниринга.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍13🔥6🤝1