Разъяснивший Python
8.17K 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
os.listdir() + os.path.isfile()

Нужно обработать все файлы в директории? Новички часто пытаются вручную указывать имена, но Python позволяет получить список файлов автоматически!

Модуль os предоставляет метод listdir(), который возвращает содержимое директории, а фильтрация с помощью os.path.isfile() позволяет выбрать только файлы.

Итог:
Используйте os.listdir() + os.path.isfile(), чтобы получить список всех файлов в директории — удобно для массовой обработки, загрузки или анализа.

Разъяснивший Python
Бесконечность в Python

Как бы иронично это ни звучало, бесконечность определяется как неопределенное число, которое может быть как положительным, так и отрицательным значением. Все арифметические операции, выполняемые над бесконечным числом, всегда приводят к бесконечному числу, скажем, суммирование, вычитание, умножение или любая другая операция.

Положительная бесконечность: inf
Отрицательная бесконечность: -inf

Поскольку бесконечность может быть как положительной, так и отрицательной, их можно представить как число float('inf') и число float('-inf') соответственно.

Примеры

Сверху я написал незамысловатый код, который выводит отрицательное и положительное числа соответственно(мне кажется объяснять работу кода не надо)

Зачем это нужно?

В питонячем мире бесконечность обычно используется для измерения производительности и оптимизации алгоритмов, выполняющих вычисления в крупномасштабных приложениях.

Разъяснивший Python
1👍1
Быстро создаём SQLite-базу данных

Когда нужно протестировать идею или сделать лёгкое приложение, новички часто тратят время на настройку полноценной СУБД. Но в Python есть встроенная SQLite — это база данных, которая хранится в одном файле и не требует установки.

С помощью модуля sqlite3 можно создать базу, таблицу и вставить данные всего в несколько строк.

Итог:
SQLite позволяет быстро работать с базой данных без дополнительной установки. Подключение, создание таблиц и выполнение запросов — всё делается через стандартный модуль sqlite3.

Разъяснивший Python
2
lambda-функция — это компактный способ определить функцию без использования стандартного объявления def.

Она позволяет создавать простые функции "на лету" без необходимости использования отдельного имени функции.

В примере выше мы используем lambda-функцию для того, чтобы отфильтровать список чисел для получения только чётных чисел.

Особенности lambda-функций:
• Они являются однострочными функциями.
• Они могут принимать любое количество аргументов, но могут содержать только одно выражение.
• Они сразу возвращают результат вычисления выражения.

Lambda-функции особенно полезны, когда требуется определить простые функции, которые не требуют многострочных инструкций или сложной логики. Они позволяют создавать функции более компактным и лаконичным способом.

Разъяснивший Python
Система поиска похожих изображений

Сделаем простую систему поиска похожих изображений. Сделаем ее без использования ИИ: для определения схожести мы будем переводить изображения в числовые векторы признаков, а векторы сравнивать с помощью расстояния.

Логика кода проста. Сначала мы превращаем все изображения базы в векторы. Затем извлекаются признаки из запроса. Вычисляем сходство между запросом и базой и в результате выводим топ-N наиболее похожих изображений.

При желании можно улучшить код. Например, вместо простых цветов взять признаки через нейросеть, или выделить отдельные признаки для поиска по цвету, текстуре, объемам.

Ссылка на код

Разъяснивший Python
Получаем названия столбцов из результата запроса

При работе с базой данных важно знать названия полей в результатах запроса. Новички часто пытаются вручную догадываться о структуре результата, особенно если данных много или они получены из внешнего источника.

С sqlite3 можно легко получить названия столбцов прямо из курсора после выполнения запроса, без дополнительного кода.

Итог:
Чтобы получить список названий столбцов из SQL-запроса, можно использовать cursor.description — это простой способ понять структуру данных, особенно при работе с динамическими запросами.

Разъяснивший Python
Как автоматизировать инфраструктуру с помощью Terraform и Ansible

Terraform и Ansible — два популярных инструмента, которые помогают автоматизировать инфраструктуру и управлять ей. Рассказываем, в чем их особенности и как их можно интегрировать в разработку.

Читать

Разъяснивший Python
Решаем криптарифмы с помощью алгебры и python

Числовые ребусы хороши для тренировки у младшеклассников навыков логического мышления и счета в столбик. Однако и взрослым программистам может быть интересно поискать ответ на общий вопрос - а как, всё таки, алгоритмизировать процесс решения ребуса?

Читать

Разъяснивший Python
👍1
Автоматически подставляем параметры в SQL-запрос

Новички иногда вставляют значения в SQL-запросы через f-строки или конкатенацию, что небезопасно и может привести к SQL-инъекциям. Python предлагает встроенный и безопасный способ подстановки данных в запрос с помощью параметризованных запросов.

Это не только безопаснее, но и удобнее для работы с переменными.

Итог:
Используйте ? и кортежи для подстановки значений в SQL-запросы — это защищает от SQL-инъекций и делает код чище и безопаснее.

Разъяснивший Python
functools — встроенный в Python модуль, который предоставляет набор полезных функций, связанных с функциональным программированием.

Модуль functools предоставляет инструменты для работы с функциями высшего порядка, функциями обратного вызова (callback) и другими полезными возможностями.

Давайте разберём функцию reduce модуля functools.
Функция reduce применяет указанную функцию(в примере выше мы использовали lambda-функцию) к элементам итерируемого объекта слева направо, сворачивая их в одно значение. Это полезно, когда вам нужно применить операцию накопления к последовательности значений.

Использование функций из модуля functools позволяет повысить эффективность и удобство разработки, особенно при работе с функциональным программированием, декораторами и другими продвинутыми возможностями Python.

Разъяснивший Python
Получаем количество строк, затронутых SQL-запросом

После выполнения SQL-запроса может потребоваться узнать, сколько строк было затронуто — например, при UPDATE или DELETE. Многие новички не знают, что Python позволяет легко получить это значение.

Используйте атрибут cursor.rowcount, чтобы сразу узнать, сколько строк было изменено или удалено.

Итог:
cursor.rowcount позволяет получить количество строк, затронутых последним SQL-запросом — удобно для логирования, проверки и отладки.

Разъяснивший Python
👍1
Безопасные SQL-запросы с параметрами

Новички часто вставляют значения прямо в SQL-строку, что может привести к SQL-инъекциям и ошибкам. В Python с библиотекой sqlite3 (и другими DB API) правильнее использовать параметры запроса.

Вместо конкатенации строк, используйте ? — это защитит вас от уязвимостей и избавит от лишнего форматирования.

Итог:
Используйте параметризованные запросы (? и кортеж) вместо подстановки значений вручную — это безопаснее и чище.

Разъяснивший Python
👍2
itertools для итерации более чем одного итерируемого объекта

Если вы когда-нибудь оказывались в ситуации, когда вы пишете вложенные циклы или сложные функции для итерации более чем одного итерируемого объекта, проверьте, есть ли нужная функция в библиотеке itertools.

Возможно, вам не придется изобретать велосипед — Python учтёт все ваши потребности.

🔗 Ссылочка на доку

Разъяснивший Python
partial — функция из модуля functools, которая используется для создания новой функции с некоторыми аргументами, которые уже заданы заранее.

На примере(см. выше) функция partial используется для создания новой функции с фиксированными значениями аргументов. Она принимает функцию и задает некоторые аргументы заранее, которые станут постоянными для создаваемой функции.

Это полезно, когда вы хотите создать функцию с некоторыми предустановленными аргументами

Разъяснивший Python
Оптимизируем множественные вставки в БД

Когда нужно вставить много строк в базу данных, делать INSERT в цикле — медленно и неэффективно. Используйте executemany() — он вставляет все строки одним запросом, что значительно ускоряет выполнение.

Итог:
Используйте executemany() для пакетной вставки данных — это быстрее и уменьшает нагрузку на базу.

Разъяснивший Python
enumerate() — встроенная в Python функция, которая используется для итерации по последовательности одновременно с получением индекса и значения каждого элемента.

Синтаксис функции enumerate():
enumerate(sequence, start=1), где sequence - последовательность, по которой мы хотим производить итерацию (например, список, кортеж, строка и т.д.), а start (необязательный) - значение, с которого начинается индексирование. По умолчанию равно 0.

Разъяснивший Python
setattr — функция, которая используется для установки значения атрибута объекта по его имени.

Синтаксис функции setattr():
setattr(object, attribute_name, value) 

• object - объект, для которого мы хотим установить атрибут.
• attribute_name - имя атрибута, который мы хотим установить.
• value - значение, которое мы хотим присвоить атрибуту.

Думаю, пример объяснять не надо. Если коротко: мы меняем артибут объекта Car :)

P.S. Если запрашиваемый атрибут не существует, то функция вернёт AttributeError, Необходимо обрабатывать это исключение.

Разъяснивший Python
Получаем количество строк без загрузки всех данных

Чтобы узнать, сколько строк вернёт запрос, не обязательно загружать все данные в память. Вместо SELECT * используйте SELECT COUNT(*) — это быстрее и экономит ресурсы.

Итог:
Используйте COUNT(*) для быстрой оценки количества записей — это эффективнее, чем вытягивать все строки и считать их вручную.

Разъяснивший Python
👍1
pandas — модуль для анализа и обработки данных

Pandas высокоуровневые структуры данных, такие как DataFrame, для эффективной и удобной работы с табличными данными. Pandas позволяет считывать и записывать данные из различных источников, выполнять операции фильтрации, сортировки, группировки, объединения и агрегации данных. Он также предлагает широкий набор функций для обработки пропущенных значений, работы с датами и временем, визуализации данных и многое другое.

В примере(см. выше) мы создаем DataFrame с именами и возрастами персон. Затем мы выводим DataFrame на экран. Далее мы фильтруем данные, выбирая только персон с возрастом выше 30. И в конце мы выводим отфильтрованный DataFrame

Документация и примеры кода здесь

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