Быстро создаём SQLite-базу данных
Когда нужно протестировать идею или сделать лёгкое приложение, новички часто тратят время на настройку полноценной СУБД. Но в Python есть встроенная SQLite — это база данных, которая хранится в одном файле и не требует установки.
С помощью модуля sqlite3 можно создать базу, таблицу и вставить данные всего в несколько строк.
Итог:
SQLite позволяет быстро работать с базой данных без дополнительной установки. Подключение, создание таблиц и выполнение запросов — всё делается через стандартный модуль sqlite3.
#theory // Just Python
Когда нужно протестировать идею или сделать лёгкое приложение, новички часто тратят время на настройку полноценной СУБД. Но в Python есть встроенная SQLite — это база данных, которая хранится в одном файле и не требует установки.
С помощью модуля sqlite3 можно создать базу, таблицу и вставить данные всего в несколько строк.
Итог:
SQLite позволяет быстро работать с базой данных без дополнительной установки. Подключение, создание таблиц и выполнение запросов — всё делается через стандартный модуль sqlite3.
#theory // Just Python
Contextlib для обработки внешних источников
Библиотека
Ссылочка на доку
#theory // Just Python
Библиотека
contextlib
в Python предоставляет утилиты для работы с контекстными менеджерами и упрощения создания и использования ресурсов с помощью оператора with
.Ссылочка на доку
#theory // Just Python
Система поиска похожих изображений
Сделаем простую систему поиска похожих изображений. Сделаем ее без использования ИИ: для определения схожести мы будем переводить изображения в числовые векторы признаков, а векторы сравнивать с помощью расстояния.
Логика кода проста. Сначала мы превращаем все изображения базы в векторы. Затем извлекаются признаки из запроса. Вычисляем сходство между запросом и базой и в результате выводим топ-N наиболее похожих изображений.
При желании можно улучшить код. Например, вместо простых цветов взять признаки через нейросеть, или выделить отдельные признаки для поиска по цвету, текстуре, объемам.
Ссылка на код
#theory // Just Python
Сделаем простую систему поиска похожих изображений. Сделаем ее без использования ИИ: для определения схожести мы будем переводить изображения в числовые векторы признаков, а векторы сравнивать с помощью расстояния.
Логика кода проста. Сначала мы превращаем все изображения базы в векторы. Затем извлекаются признаки из запроса. Вычисляем сходство между запросом и базой и в результате выводим топ-N наиболее похожих изображений.
При желании можно улучшить код. Например, вместо простых цветов взять признаки через нейросеть, или выделить отдельные признаки для поиска по цвету, текстуре, объемам.
Ссылка на код
#theory // Just Python
Получаем названия столбцов из результата запроса
При работе с базой данных важно знать названия полей в результатах запроса. Новички часто пытаются вручную догадываться о структуре результата, особенно если данных много или они получены из внешнего источника.
С sqlite3 можно легко получить названия столбцов прямо из курсора после выполнения запроса, без дополнительного кода.
Итог:
Чтобы получить список названий столбцов из SQL-запроса, можно использовать cursor.description — это простой способ понять структуру данных, особенно при работе с динамическими запросами.
#theory // Just Python
При работе с базой данных важно знать названия полей в результатах запроса. Новички часто пытаются вручную догадываться о структуре результата, особенно если данных много или они получены из внешнего источника.
С sqlite3 можно легко получить названия столбцов прямо из курсора после выполнения запроса, без дополнительного кода.
Итог:
Чтобы получить список названий столбцов из SQL-запроса, можно использовать cursor.description — это простой способ понять структуру данных, особенно при работе с динамическими запросами.
#theory // Just Python
Проверьте, удовлетворяет ли каждый элемент списка какому-либо условию
Мы можем легко и быстро проверить, соответствует ли каждый элемент списка определенному условию. Это полезно для проверки свойств или характеристик всех элементов списка перед выполнением определенных операций с ними.
#theory // Just Python
Мы можем легко и быстро проверить, соответствует ли каждый элемент списка определенному условию. Это полезно для проверки свойств или характеристик всех элементов списка перед выполнением определенных операций с ними.
#theory // Just Python
functools — встроенный в Python модуль, который предоставляет набор полезных функций, связанных с функциональным программированием.
Модуль functools предоставляет инструменты для работы с функциями высшего порядка, функциями обратного вызова (callback) и другими полезными возможностями.
Давайте разберём функцию reduce модуля functools.
Функция reduce применяет указанную функцию(в примере выше мы использовали lambda-функцию) к элементам итерируемого объекта слева направо, сворачивая их в одно значение. Это полезно, когда вам нужно применить операцию накопления к последовательности значений.
Использование функций из модуля functools позволяет повысить эффективность и удобство разработки, особенно при работе с функциональным программированием, декораторами и другими продвинутыми возможностями Python.
#theory // Just Python
Модуль functools предоставляет инструменты для работы с функциями высшего порядка, функциями обратного вызова (callback) и другими полезными возможностями.
Давайте разберём функцию reduce модуля functools.
Функция reduce применяет указанную функцию(в примере выше мы использовали lambda-функцию) к элементам итерируемого объекта слева направо, сворачивая их в одно значение. Это полезно, когда вам нужно применить операцию накопления к последовательности значений.
Использование функций из модуля functools позволяет повысить эффективность и удобство разработки, особенно при работе с функциональным программированием, декораторами и другими продвинутыми возможностями Python.
#theory // Just Python
partial — функция из модуля functools, которая используется для создания новой функции с некоторыми аргументами, которые уже заданы заранее.
На примере(см. выше) функция partial используется для создания новой функции с фиксированными значениями аргументов. Она принимает функцию и задает некоторые аргументы заранее, которые станут постоянными для создаваемой функции.
Это полезно, когда вы хотите создать функцию с некоторыми предустановленными аргументами.
#theory // Just Python
На примере(см. выше) функция partial используется для создания новой функции с фиксированными значениями аргументов. Она принимает функцию и задает некоторые аргументы заранее, которые станут постоянными для создаваемой функции.
Это полезно, когда вы хотите создать функцию с некоторыми предустановленными аргументами.
#theory // Just Python
Автоматически подставляем параметры в SQL-запрос
Новички иногда вставляют значения в SQL-запросы через f-строки или конкатенацию, что небезопасно и может привести к SQL-инъекциям. Python предлагает встроенный и безопасный способ подстановки данных в запрос с помощью параметризованных запросов.
Это не только безопаснее, но и удобнее для работы с переменными.
Итог:
Используйте ? и кортежи для подстановки значений в SQL-запросы — это защищает от SQL-инъекций и делает код чище и безопаснее.
#theory // Just Python
Новички иногда вставляют значения в SQL-запросы через f-строки или конкатенацию, что небезопасно и может привести к SQL-инъекциям. Python предлагает встроенный и безопасный способ подстановки данных в запрос с помощью параметризованных запросов.
Это не только безопаснее, но и удобнее для работы с переменными.
Итог:
Используйте ? и кортежи для подстановки значений в SQL-запросы — это защищает от SQL-инъекций и делает код чище и безопаснее.
#theory // Just Python
Получаем количество строк, затронутых SQL-запросом
После выполнения SQL-запроса может потребоваться узнать, сколько строк было затронуто — например, при UPDATE или DELETE. Многие новички не знают, что Python позволяет легко получить это значение.
Используйте атрибут cursor.rowcount, чтобы сразу узнать, сколько строк было изменено или удалено.
Итог:
#theory // Just Python
После выполнения SQL-запроса может потребоваться узнать, сколько строк было затронуто — например, при UPDATE или DELETE. Многие новички не знают, что Python позволяет легко получить это значение.
Используйте атрибут cursor.rowcount, чтобы сразу узнать, сколько строк было изменено или удалено.
Итог:
cursor.rowcount
позволяет получить количество строк, затронутых последним SQL-запросом — удобно для логирования, проверки и отладки.#theory // Just Python
itertools для итерации более чем одного итерируемого объекта
Если вы когда-нибудь оказывались в ситуации, когда вы пишете вложенные циклы или сложные функции для итерации более чем одного итерируемого объекта, проверьте, есть ли нужная функция в библиотеке itertools.
Возможно, вам не придется изобретать велосипед — Python учтёт все ваши потребности.
#theory // Just Python
Если вы когда-нибудь оказывались в ситуации, когда вы пишете вложенные циклы или сложные функции для итерации более чем одного итерируемого объекта, проверьте, есть ли нужная функция в библиотеке itertools.
Возможно, вам не придется изобретать велосипед — Python учтёт все ваши потребности.
#theory // Just Python
enumerate() — встроенная в Python функция, которая используется для итерации по последовательности одновременно с получением индекса и значения каждого элемента.
Синтаксис функции enumerate():
На примере(см. выше) я вывел список фруктов с их индексами :3
#theory // Just Python
Синтаксис функции enumerate():
enumerate(sequence, start=1)
, где sequence - последовательность, по которой мы хотим производить итерацию (например, список, кортеж, строка и т.д.), а start (необязательный) - значение, с которого начинается индексирование. По умолчанию равно 0.На примере(см. выше) я вывел список фруктов с их индексами :3
#theory // Just Python
Оптимизируем множественные вставки в БД
Когда нужно вставить много строк в базу данных, делать INSERT в цикле — медленно и неэффективно. Используйте
Итог:
Используйте
#theory // Just Python
Когда нужно вставить много строк в базу данных, делать INSERT в цикле — медленно и неэффективно. Используйте
executemany()
— он вставляет все строки одним запросом, что значительно ускоряет выполнение.Итог:
Используйте
executemany()
для пакетной вставки данных — это быстрее и уменьшает нагрузку на базу.#theory // Just Python
setattr — функция, которая используется для установки значения атрибута объекта по его имени.
Синтаксис функции setattr():
• object - объект, для которого мы хотим установить атрибут.
• attribute_name - имя атрибута, который мы хотим установить.
• value - значение, которое мы хотим присвоить атрибуту.
Думаю, пример объяснять не надо. Если коротко: мы меняем артибут объекта Car :)
P.S. Если запрашиваемый атрибут не существует, то функция вернёт AttributeError, Необходимо обрабатывать это исключение.
#theory // Just Python
Синтаксис функции setattr():
setattr(object, attribute_name, value)
• object - объект, для которого мы хотим установить атрибут.
• attribute_name - имя атрибута, который мы хотим установить.
• value - значение, которое мы хотим присвоить атрибуту.
Думаю, пример объяснять не надо. Если коротко: мы меняем артибут объекта Car :)
P.S. Если запрашиваемый атрибут не существует, то функция вернёт AttributeError, Необходимо обрабатывать это исключение.
#theory // Just Python
pandas — модуль для анализа и обработки данных
Pandas высокоуровневые структуры данных, такие как DataFrame, для эффективной и удобной работы с табличными данными. Pandas позволяет считывать и записывать данные из различных источников, выполнять операции фильтрации, сортировки, группировки, объединения и агрегации данных. Он также предлагает широкий набор функций для обработки пропущенных значений, работы с датами и временем, визуализации данных и многое другое.
В примере(см. выше) мы создаем DataFrame с именами и возрастами персон. Затем мы выводим DataFrame на экран. Далее мы фильтруем данные, выбирая только персон с возрастом выше 30. И в конце мы выводим отфильтрованный DataFrame
Документация и примеры кода здесь :3
#theory // Just Python
Pandas высокоуровневые структуры данных, такие как DataFrame, для эффективной и удобной работы с табличными данными. Pandas позволяет считывать и записывать данные из различных источников, выполнять операции фильтрации, сортировки, группировки, объединения и агрегации данных. Он также предлагает широкий набор функций для обработки пропущенных значений, работы с датами и временем, визуализации данных и многое другое.
В примере(см. выше) мы создаем DataFrame с именами и возрастами персон. Затем мы выводим DataFrame на экран. Далее мы фильтруем данные, выбирая только персон с возрастом выше 30. И в конце мы выводим отфильтрованный DataFrame
Документация и примеры кода здесь :3
#theory // Just Python
OpenCV — библиотека компьютерного зрения и обработки изображений.
OpenCV это библиотека с открытым исходным кодом, предназначенная для разработки приложений в области компьютерного зрения и обработки изображений. Она содержит богатый набор функций, позволяющих работать с изображениями и видео, выполнять операции по обнаружению и распознаванию объектов, анализу движения, сегментации изображений и многому другому.
В примере(см. выше) мы используем функцию imread() загрузки изображения. Затем мы используем функцию imshow() для отображения изображения на экране. Функция waitKey(0) ожидает нажатия клавиши на клавиатуре и затем destroyAllWindows() закрывает открытое окно с изображением.
Документация и примеры кода здесь
#theory // Just Python
OpenCV это библиотека с открытым исходным кодом, предназначенная для разработки приложений в области компьютерного зрения и обработки изображений. Она содержит богатый набор функций, позволяющих работать с изображениями и видео, выполнять операции по обнаружению и распознаванию объектов, анализу движения, сегментации изображений и многому другому.
В примере(см. выше) мы используем функцию imread() загрузки изображения. Затем мы используем функцию imshow() для отображения изображения на экране. Функция waitKey(0) ожидает нажатия клавиши на клавиатуре и затем destroyAllWindows() закрывает открытое окно с изображением.
Документация и примеры кода здесь
#theory // Just Python
getattr — функция, которая возвращает значение атрибута объекта с указанным именем
Если атрибут не существует, можно указать значение по умолчанию, которое будет возвращено вместо возбуждения исключения.
Синтаксис функции getattr:
• object - объект, у которого нужно получить атрибут.
• attribute_name - имя атрибута, значение которого нужно получить.
• default_value (необязательно) - значение по умолчанию, возвращаемое, если атрибут не существует.
На примере выше мы получаем атрибут "color" объекта Car(т.е. blue)
P.S. Если атрибут не существует и не указано значение по умолчанию, функция вызовет исключение AttributeError, поэтому следует быть осторожным и удостовериться, что атрибут существует.
#theory // Just Python
Если атрибут не существует, можно указать значение по умолчанию, которое будет возвращено вместо возбуждения исключения.
Синтаксис функции getattr:
getattr(object, attribute_name, default_value)
• object - объект, у которого нужно получить атрибут.
• attribute_name - имя атрибута, значение которого нужно получить.
• default_value (необязательно) - значение по умолчанию, возвращаемое, если атрибут не существует.
На примере выше мы получаем атрибут "color" объекта Car(т.е. blue)
P.S. Если атрибут не существует и не указано значение по умолчанию, функция вызовет исключение AttributeError, поэтому следует быть осторожным и удостовериться, что атрибут существует.
#theory // Just Python
Форматирование чисел с плавающей точкой.
Чтобы избежать e-число в числе с плавающей точкой — можно воспользоваться форматированием f-строк.
Синтаксис форматирования чисел с плавающей точкой
f"{число:.n}", где число - значение, которое мы хотим отформатировать, а n - количество знаков после запятой(вы также можете указать значение 0, что уберёт числа после запятой).
На примере(см. выше) получим цену SHIB, а зачем вывел e-число. Чтобы не показывать конечному пользователю некрасивое e-число, затем воспользуемся форматированием :3
#theory // Just Python
Чтобы избежать e-число в числе с плавающей точкой — можно воспользоваться форматированием f-строк.
Синтаксис форматирования чисел с плавающей точкой
f"{число:.n}", где число - значение, которое мы хотим отформатировать, а n - количество знаков после запятой(вы также можете указать значение 0, что уберёт числа после запятой).
На примере(см. выше) получим цену SHIB, а зачем вывел e-число. Чтобы не показывать конечному пользователю некрасивое e-число, затем воспользуемся форматированием :3
#theory // Just Python
PaddleOCR для оптического распознавания символов
PaddleOCR — многоязычные наборы инструментов OCR на основе DL-фреймворка PaddlePaddle.
Поддержка обучения и развертывания на серверных, мобильных, встроенных устройствах и IoT
Ссылочка на доку
#theory // Just Python
PaddleOCR — многоязычные наборы инструментов OCR на основе DL-фреймворка PaddlePaddle.
Поддержка обучения и развертывания на серверных, мобильных, встроенных устройствах и IoT
Ссылочка на доку
#theory // Just Python
psutil — кроссплатформенный, встроенный модуль, который позволяет получать данные о системе.
psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе.
#theory // Just Python
psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе.
#theory // Just Python