Рандомные координаты
Про комикс, который вызывается с помощью import antigravity слышали все (если вы его не видели, то ловите). Но если покопаться, можно найти пасхалку в пасхалке: в модуле antigravity.py можно найти функцию geohash, которая открывает другой комикс и генерирует случайные координаты.
Python Academy
Про комикс, который вызывается с помощью import antigravity слышали все (если вы его не видели, то ловите). Но если покопаться, можно найти пасхалку в пасхалке: в модуле antigravity.py можно найти функцию geohash, которая открывает другой комикс и генерирует случайные координаты.
Python Academy
❤5🔥3👏2🤩2🤗2👍1🎉1
Оптимизируем множественные вставки в БД
Когда нужно вставить много строк в базу данных, делать INSERT в цикле — медленно и неэффективно. Используйте executemany() — он вставляет все строки одним запросом, что значительно ускоряет выполнение.
🎯 Итог
Используйте executemany() для пакетной вставки данных — это быстрее и уменьшает нагрузку на базу.
Python Academy
Когда нужно вставить много строк в базу данных, делать INSERT в цикле — медленно и неэффективно. Используйте executemany() — он вставляет все строки одним запросом, что значительно ускоряет выполнение.
🎯 Итог
Используйте executemany() для пакетной вставки данных — это быстрее и уменьшает нагрузку на базу.
Python Academy
🔥5🤗4❤3👍2🤩2😁1🎉1
⚡ Получаем количество строк без загрузки всех данных
Чтобы узнать, сколько строк вернёт запрос, не обязательно загружать все данные в память. Вместо SELECT * используйте SELECT COUNT(*) — это быстрее и экономит ресурсы.
🎯 Итог
Используйте COUNT(*) для быстрой оценки количества записей — это эффективнее, чем вытягивать все строки и считать их вручную.
Python Academy
Чтобы узнать, сколько строк вернёт запрос, не обязательно загружать все данные в память. Вместо SELECT * используйте SELECT COUNT(*) — это быстрее и экономит ресурсы.
🎯 Итог
Используйте COUNT(*) для быстрой оценки количества записей — это эффективнее, чем вытягивать все строки и считать их вручную.
Python Academy
🤩5🔥3👍2🎉2👏1😁1🤗1
Безопасные SQL-запросы через параметризованные запросы
Новички часто подставляют значения в SQL-запрос через f-строки или конкатенацию, что может привести к SQL-инъекциям. Вместо этого используйте параметризованные запросы — это безопасно и правильно.
🎯 Итог
Всегда используйте параметризованные запросы для защиты от SQL-инъекций. Это безопаснее и чище, чем вручную подставлять значения в строки.
Python Academy
Новички часто подставляют значения в SQL-запрос через f-строки или конкатенацию, что может привести к SQL-инъекциям. Вместо этого используйте параметризованные запросы — это безопасно и правильно.
🎯 Итог
Всегда используйте параметризованные запросы для защиты от SQL-инъекций. Это безопаснее и чище, чем вручную подставлять значения в строки.
Python Academy
🔥5👏4😁4🤗3🎉2❤1👍1🤩1
Быстрое создание таблицы, если её нет
При первом запуске скрипта бывает нужно создать таблицу, если она ещё не существует. Вместо проверки вручную можно использовать встроенную конструкцию SQL — CREATE TABLE IF NOT EXISTS.
🎯 Итог
CREATE TABLE IF NOT EXISTS позволяет избежать ошибок при повторном создании таблицы и упрощает инициализацию базы данных.
Python Academy
При первом запуске скрипта бывает нужно создать таблицу, если она ещё не существует. Вместо проверки вручную можно использовать встроенную конструкцию SQL — CREATE TABLE IF NOT EXISTS.
🎯 Итог
CREATE TABLE IF NOT EXISTS позволяет избежать ошибок при повторном создании таблицы и упрощает инициализацию базы данных.
Python Academy
👍4🎉3🤩3🔥2👏1🤗1
Используем параметризованные запросы для защиты от SQL-инъекций
Новички часто подставляют значения в SQL-запросы через f-строки или конкатенацию, что может привести к уязвимостям. Вместо этого лучше использовать параметризованные запросы, которые автоматически экранируют значения и защищают от SQL-инъекций.
🎯 Итог
Параметризованные запросы не только безопаснее, но и делают код чище. Никогда не вставляй переменные напрямую в SQL — используй placeholder'ы (? или %s), и передавай значения отдельно.
Python Academy
Новички часто подставляют значения в SQL-запросы через f-строки или конкатенацию, что может привести к уязвимостям. Вместо этого лучше использовать параметризованные запросы, которые автоматически экранируют значения и защищают от SQL-инъекций.
🎯 Итог
Параметризованные запросы не только безопаснее, но и делают код чище. Никогда не вставляй переменные напрямую в SQL — используй placeholder'ы (? или %s), и передавай значения отдельно.
Python Academy
❤5🔥4🎉3😁2👍1👏1🤩1🤗1
Получаем все строки как словари
При работе с SQLite результат запроса по умолчанию возвращается в виде кортежей. Это не очень удобно, особенно если нужно обращаться к значениям по названиям колонок. Можно включить специальный режим, чтобы строки возвращались как словари.
🎯 Итог
Используй row_factory = dict_factory, чтобы получать строки из БД как словари. Это упростит доступ к данным и сделает код более читаемым.
Python Academy
При работе с SQLite результат запроса по умолчанию возвращается в виде кортежей. Это не очень удобно, особенно если нужно обращаться к значениям по названиям колонок. Можно включить специальный режим, чтобы строки возвращались как словари.
🎯 Итог
Используй row_factory = dict_factory, чтобы получать строки из БД как словари. Это упростит доступ к данным и сделает код более читаемым.
Python Academy
🔥3😁3🤗3👏2🎉2🤩2
Безопасные SQL-запросы с параметрами
Многие новички склонны вставлять значения напрямую в SQL-запросы с помощью f-строк, что может привести к SQL-инъекциям. Вместо этого лучше использовать параметризованные запросы — это безопаснее и чище.
🎯 Итог
Избегай f-строк в SQL-запросах — всегда используй параметризованные запросы, чтобы защититься от SQL-инъекций и писать более надёжный код.
Python Academy
Многие новички склонны вставлять значения напрямую в SQL-запросы с помощью f-строк, что может привести к SQL-инъекциям. Вместо этого лучше использовать параметризованные запросы — это безопаснее и чище.
🎯 Итог
Избегай f-строк в SQL-запросах — всегда используй параметризованные запросы, чтобы защититься от SQL-инъекций и писать более надёжный код.
Python Academy
🔥4🎉4🤗4👍2👏2🤩2
Автоматическое закрытие соединения с БД
Часто новички забывают закрыть соединение с базой данных, что может привести к утечкам ресурсов. Вместо ручного закрытия лучше использовать контекстный менеджер with, который автоматически закрывает соединение.
🎯 Итог
Используй with при работе с базами данных — это не только чище, но и безопаснее: соединение закроется автоматически даже при ошибках.
Python Academy
Часто новички забывают закрыть соединение с базой данных, что может привести к утечкам ресурсов. Вместо ручного закрытия лучше использовать контекстный менеджер with, который автоматически закрывает соединение.
🎯 Итог
Используй with при работе с базами данных — это не только чище, но и безопаснее: соединение закроется автоматически даже при ошибках.
Python Academy
❤3👍3🔥3🤩3😁2🤗2👏1🎉1
Возврат нескольких значений из функции
Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать.
Python Academy
Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать.
Python Academy
❤6😁5🤗5👍4🤩4🎉3🔥2
Массовая вставка данных без цикла
Вставлять много записей по одной — неэффективно. Лучше использовать метод executemany, который сразу выполнит множество вставок за один запрос.
🎯 Итог
executemany позволяет вставлять или обновлять множество записей за один запрос, экономя время и ресурсы.
Python Academy
Вставлять много записей по одной — неэффективно. Лучше использовать метод executemany, который сразу выполнит множество вставок за один запрос.
🎯 Итог
executemany позволяет вставлять или обновлять множество записей за один запрос, экономя время и ресурсы.
Python Academy
❤6🔥4😁4🎉4👏3🤗3👍2🤩2
🧵 Упрощаем цепочки if с помощью match-case
Иногда при проверке значения переменной мы пишем длинную цепочку if-elif-else. Это выглядит громоздко и сложно читается.
С Python 3.10 можно использовать конструкцию match-case, которая делает код компактнее и читабельнее — особенно при работе со строками, числом или даже структурами данных.
🎯 Итог
match-case — это элегантная альтернатива if-elif-else в Python 3.10+. Подходит для ветвлений по значениям, в том числе с распаковкой. Пиши чище, читай легче!
Python Academy
Иногда при проверке значения переменной мы пишем длинную цепочку if-elif-else. Это выглядит громоздко и сложно читается.
С Python 3.10 можно использовать конструкцию match-case, которая делает код компактнее и читабельнее — особенно при работе со строками, числом или даже структурами данных.
🎯 Итог
match-case — это элегантная альтернатива if-elif-else в Python 3.10+. Подходит для ветвлений по значениям, в том числе с распаковкой. Пиши чище, читай легче!
Python Academy
👍6👏5😁5🎉5🤗5🔥4🤩4❤2
⏱️ Как быстро измерить время выполнения кода
Иногда нужно понять, сколько времени занимает выполнение куска кода. В боевых условиях используют logging и профилировщики, но для быстрой отладки есть простой лайфхак с time.perf_counter().
🎯 Итог
time.perf_counter() — точный и удобный способ измерить время выполнения кода. Используй для быстрой диагностики производительности прямо в процессе разработки.
Python Academy
Иногда нужно понять, сколько времени занимает выполнение куска кода. В боевых условиях используют logging и профилировщики, но для быстрой отладки есть простой лайфхак с time.perf_counter().
🎯 Итог
time.perf_counter() — точный и удобный способ измерить время выполнения кода. Используй для быстрой диагностики производительности прямо в процессе разработки.
Python Academy
👍6👏5🤗5❤3🔥3😁3🎉3🤩2
🔁 Как один раз инициализировать ресурс при первом использовании
Допустим, у тебя есть тяжёлая операция (например, подключение к БД, загрузка модели и т.д.), которую нужно выполнить только один раз при первом вызове. Для этого идеально подходит functools.lru_cache.
🎯 Итог
@lru_cache — простой способ ленивой инициализации: функция выполнится один раз, а результат будет использоваться повторно. Идеально для кэширования настроек, соединений и других «разовых» данных.
Python Academy
Допустим, у тебя есть тяжёлая операция (например, подключение к БД, загрузка модели и т.д.), которую нужно выполнить только один раз при первом вызове. Для этого идеально подходит functools.lru_cache.
🎯 Итог
@lru_cache — простой способ ленивой инициализации: функция выполнится один раз, а результат будет использоваться повторно. Идеально для кэширования настроек, соединений и других «разовых» данных.
Python Academy
😁6🤗6👍5🔥4❤3🎉3👏2🤩2
⛓️ Как объединять цепочки условий красиво и читаемо
Иногда логика с множеством if становится громоздкой. В таких случаях удобно использовать словарь как аналог switch-case.
🎯 Итог
Словарь заменяет кучу if-elif-else, делает код чище и облегчает добавление новых случаев. Особенно полезно, когда условия связаны с конкретными значениями (например, кодами, командами или ролями).
Python Academy
Иногда логика с множеством if становится громоздкой. В таких случаях удобно использовать словарь как аналог switch-case.
🎯 Итог
Словарь заменяет кучу if-elif-else, делает код чище и облегчает добавление новых случаев. Особенно полезно, когда условия связаны с конкретными значениями (например, кодами, командами или ролями).
Python Academy
🤗8😁5🤩5❤4👍4👏4🎉4
⏱️ Как замерить время выполнения кода элегантно
Иногда нужно узнать, сколько времени занял блок кода — для отладки, оптимизации или просто интереса. Вместо громоздких решений можно использовать контекстный менеджер.
🎯 Итог
Контекстный менеджер timeit позволяет быстро замерять производительность без лишнего шума. Особенно полезен при профилировании отдельных участков кода.
Python Academy
Иногда нужно узнать, сколько времени занял блок кода — для отладки, оптимизации или просто интереса. Вместо громоздких решений можно использовать контекстный менеджер.
🎯 Итог
Контекстный менеджер timeit позволяет быстро замерять производительность без лишнего шума. Особенно полезен при профилировании отдельных участков кода.
Python Academy
🔥5🤗5❤3😁3🎉3👏2👍1🤩1
Использование itertools()
Модуль itertools содержит много полезных функций для работы со списками. Например, функция combinations() позволяет получить все комбинации элементов списка заданной длины.
В этом примере мы используем функцию combinations(). Из модуля itertools для получения всех комбинаций из двух элементов списка numbers.
Python Academy
Модуль itertools содержит много полезных функций для работы со списками. Например, функция combinations() позволяет получить все комбинации элементов списка заданной длины.
В этом примере мы используем функцию combinations(). Из модуля itertools для получения всех комбинаций из двух элементов списка numbers.
Python Academy
🎉4❤3👍3🤗3🔥2👏2🤩2😁1
🧩 Как элегантно объединять словари с приоритетом значений
Часто нужно объединить два словаря, где значения из второго имеют приоритет. Это можно сделать просто и читаемо.
🎯 Итог
Синтаксис {dict1, dict2} объединяет словари, давая приоритет второму. Удобен для настройки конфигураций, параметров и всего, что связано с override'ами.
Python Academy
Часто нужно объединить два словаря, где значения из второго имеют приоритет. Это можно сделать просто и читаемо.
🎯 Итог
Синтаксис {dict1, dict2} объединяет словари, давая приоритет второму. Удобен для настройки конфигураций, параметров и всего, что связано с override'ами.
Python Academy
❤5🔥4👏4🤗4👍2🤩2😁1🎉1
Используйте функцию enumerate для перебора элементов списка и их индексов
enumerate - это встроенная функция, которая принимает список и возвращает объект, который можно использовать в цикле for для перебора элементов списка и их соответствующих индексов.
Python Academy
enumerate - это встроенная функция, которая принимает список и возвращает объект, который можно использовать в цикле for для перебора элементов списка и их соответствующих индексов.
Python Academy
🔥7👍3👏3❤2🎉2🤩1