🔄 Меняем местами значения без временной переменной
Во многих языках для обмена значениями приходится использовать временную переменную, что выглядит громоздко. В Python это делается в одну строку благодаря распаковке кортежей.
🎯 Итог
Python позволяет обменивать значения напрямую через множественное присваивание — без временных переменных и лишнего кода. Лаконично и понятно!
Во многих языках для обмена значениями приходится использовать временную переменную, что выглядит громоздко. В Python это делается в одну строку благодаря распаковке кортежей.
🎯 Итог
Python позволяет обменивать значения напрямую через множественное присваивание — без временных переменных и лишнего кода. Лаконично и понятно!
✅ Проверяем запуск скрипта напрямую: if __name__ == "__main__"
Иногда нужно, чтобы часть кода выполнялась только при прямом запуске файла, а не при его импорте в другой модуль. Новички часто удивляются, почему функции выполняются «сами». Python решает это с помощью специальной проверки.
🎯 Итог
Используйте if name == "__main__" чтобы управлять тем, выполняется ли код при прямом запуске или же файл лишь импортируется как модуль. Это делает программы чище и удобнее для повторного использования.
Иногда нужно, чтобы часть кода выполнялась только при прямом запуске файла, а не при его импорте в другой модуль. Новички часто удивляются, почему функции выполняются «сами». Python решает это с помощью специальной проверки.
🎯 Итог
Используйте if name == "__main__" чтобы управлять тем, выполняется ли код при прямом запуске или же файл лишь импортируется как модуль. Это делает программы чище и удобнее для повторного использования.
Примите участие в турнире для школьников «Решись!»
Турнир «Решись!» — онлайн-состязание для школьников 10—11-х классов по четырем направлениям: разработке, искусственному интеллекту, бизнес-аналитике, а также дизайну.
«Решись!» для школьников — это возможность:
— получить грант на обучение в Центральном университете до 100% и другие призы;
— пополнить портфолио;
— проверить знания в ИИ, разработке, дизайне и бизнес-аналитике;
— найти новых знакомых в чате турнира.
Для участия вы можете выбрать как одно направление, так и все четыре — решать вам.
🕒Регистрация продлится до 12 ноября, 16:00 мск, как и отборочный тур.
👉Подробности о турнире и регистрация на сайте
Турнир «Решись!» — онлайн-состязание для школьников 10—11-х классов по четырем направлениям: разработке, искусственному интеллекту, бизнес-аналитике, а также дизайну.
«Решись!» для школьников — это возможность:
— получить грант на обучение в Центральном университете до 100% и другие призы;
— пополнить портфолио;
— проверить знания в ИИ, разработке, дизайне и бизнес-аналитике;
— найти новых знакомых в чате турнира.
Для участия вы можете выбрать как одно направление, так и все четыре — решать вам.
🕒Регистрация продлится до 12 ноября, 16:00 мск, как и отборочный тур.
👉Подробности о турнире и регистрация на сайте
Безопасные параметры в SQL через SQLAlchemy
Новички часто формируют SQL строкой, подставляя значения через f-string → это приводит к SQL-инъекциям. Используйте bind-параметры (:param) — SQLAlchemy сам экранирует значения, защищая запрос.
Не формируйте SQL вручную через f-string.
Используйте :param + словарь → и сразу получаете безопасность и читаемость запроса.
Новички часто формируют SQL строкой, подставляя значения через f-string → это приводит к SQL-инъекциям. Используйте bind-параметры (:param) — SQLAlchemy сам экранирует значения, защищая запрос.
Не формируйте SQL вручную через f-string.
Используйте :param + словарь → и сразу получаете безопасность и читаемость запроса.
Автоматическое создание таблиц из моделей SQLAlchemy
Иногда нужно быстро поднять базу данных на основе ORM-моделей, не создавая миграции вручную.
С помощью Base.metadata.create_all() можно автоматически создать все таблицы, определённые в ваших моделях, прямо в базе данных. Это особенно удобно для тестов или прототипов.
🎯 Итог:
Base.metadata.create_all() позволяет мгновенно создать все таблицы из моделей без Alembic — идеально для тестов, демо и начальной настройки проекта.
Иногда нужно быстро поднять базу данных на основе ORM-моделей, не создавая миграции вручную.
С помощью Base.metadata.create_all() можно автоматически создать все таблицы, определённые в ваших моделях, прямо в базе данных. Это особенно удобно для тестов или прототипов.
🎯 Итог:
Base.metadata.create_all() позволяет мгновенно создать все таблицы из моделей без Alembic — идеально для тестов, демо и начальной настройки проекта.
Быстрое измерение времени выполнения куска кода
Иногда нужно понять, где в проекте просадка по производительности, но тянуть профилировщик — слишком долго. В таких случаях помогает простой таймер через time.perf_counter().
Он даёт высокоточную измерительную шкалу и идеально подходит для быстрого анализа производительности отдельных функций.
🎯 Итог:
time.perf_counter() — самый простой способ быстро понять, где код тормозит, без сторонних библиотек и сложных инструментов.
Иногда нужно понять, где в проекте просадка по производительности, но тянуть профилировщик — слишком долго. В таких случаях помогает простой таймер через time.perf_counter().
Он даёт высокоточную измерительную шкалу и идеально подходит для быстрого анализа производительности отдельных функций.
🎯 Итог:
time.perf_counter() — самый простой способ быстро понять, где код тормозит, без сторонних библиотек и сложных инструментов.
Мессенджер MAX теперь полностью совместим с ОС Аврора отечественной разработки. Это отличная новость для тех, кому не обойтись без смартфонов и планшетов с Авророй на своей работе — сотрудников РЖД, Аэрофлота, Интер РАО, Ростелеком и Почты России. Речь о сотнях тысяч пользователей.
Можно смело констатировать: MAX стал ещё доступнее. Хотя нельзя сказать, что национальный мессенджер испытывает дефицит новых пользователей. В ноябре общее число зарегистрированных номеров в MAX превысило 55 млн.
Можно смело констатировать: MAX стал ещё доступнее. Хотя нельзя сказать, что национальный мессенджер испытывает дефицит новых пользователей. В ноябре общее число зарегистрированных номеров в MAX превысило 55 млн.
Удобный вывод SQL-запросов прямо в консоль с форматированием
Когда вы работаете с SQLAlchemy, отладка запросов иногда превращается в хаос — SQL выводится без форматирования, читать трудно, ошибки искать ещё труднее. Python позволяет быстро превратить любой запрос в читабельный SQL с подставленными параметрами.
🎯 Итог:
Этот приём позволяет видеть SQL-запросы в чистом виде, как в DBeaver, и экономит массу времени при отладке и оптимизации.
Когда вы работаете с SQLAlchemy, отладка запросов иногда превращается в хаос — SQL выводится без форматирования, читать трудно, ошибки искать ещё труднее. Python позволяет быстро превратить любой запрос в читабельный SQL с подставленными параметрами.
🎯 Итог:
Этот приём позволяет видеть SQL-запросы в чистом виде, как в DBeaver, и экономит массу времени при отладке и оптимизации.
Быстрое измерение времени выполнения кода без time и декораторов
Иногда нужно прикинуть, сколько реально занимает выполнение фрагмента кода — но не хочется подключать сложные профилировщики. Python даёт простой и элегантный способ измерить время прямо “на лету” с помощью time.perf_counter().
🎯 Итог:
Этот метод позволяет замерять время выполнения любых операций в одном месте, без декораторов и внешних библиотек, и идеально подходит для быстрой диагностики производительности.
Иногда нужно прикинуть, сколько реально занимает выполнение фрагмента кода — но не хочется подключать сложные профилировщики. Python даёт простой и элегантный способ измерить время прямо “на лету” с помощью time.perf_counter().
🎯 Итог:
Этот метод позволяет замерять время выполнения любых операций в одном месте, без декораторов и внешних библиотек, и идеально подходит для быстрой диагностики производительности.
Forwarded from Skolkovo LIVE
Если читаете этот пост — вы избранный! Не упустите реальную возможность получить экспертную и финансовую поддержку для развития проекта. Подробности — на карточках и по ссылке!
UPD: В Сколково прошла Московская международная неделя видеоигр — на ключевой сессии деловой программы состоялась презентация акселератора.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как красиво логировать объекты без ручного форматирования
Когда нужно записать в лог сложный объект (например, dict с вложенными структурами), обычный print() делает кашу. А logging без форматирования выглядит громоздко. Есть быстрый способ — использовать pprint прямо внутри логирования.
Хотите логировать сложные структуры красиво и читаемо, но не хотите вручную форматировать JSON или писать многострочные print(). Используйте pprint.pformat() — он превращает объект в красиво отформатированную строку, которая идеально ложится в лог.
Когда нужно записать в лог сложный объект (например, dict с вложенными структурами), обычный print() делает кашу. А logging без форматирования выглядит громоздко. Есть быстрый способ — использовать pprint прямо внутри логирования.
Хотите логировать сложные структуры красиво и читаемо, но не хотите вручную форматировать JSON или писать многострочные print(). Используйте pprint.pformat() — он превращает объект в красиво отформатированную строку, которая идеально ложится в лог.