Python Academy
47.7K subscribers
1.2K photos
3 videos
413 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @zubar89

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Красивый вывод таблиц

Недавно нам понадобилось логировать часть базы данных. И тут мы вспомнили про прекрасный модуль prettytable, который позволяет красиво выводить таблицы.

Итак, имена столбцов задается с помощью атрибута table.field_names. А добавлять строки с данными в таблицу можно методом table.add_row([]), передавая туда список элементов.

Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод table.get_string().

#трюки #prettytable
👍6
16 октября пройдет митап about:cloud — infrastructure

Неформальная встреча для тех, кто каждый день работает с инфраструктурой и сетевыми сервисами.

В программе:
— Управление тысячами выделенных серверов;
— Развитие и устройство NFS;
— Headless в VPC;
— Автоматизация приватных соединений;
— Опыт работы с малыми S3-инсталляциями.

Митап — это не только доклады, но и живое общение со спикерами и коллегами по индустрии.

Формат: офлайн в Москве + онлайн для участников из любых городов

Регистрируйтесь, чтобы первыми узнать об изменениях сервисов от разработчиков Yandex Cloud.
🔥1
Понимание различий между операторами сравнения == и is

Множество разработчиков сталкиваются с трудностями в отличии двух операторов сравнения: == и is, что может привести к неожиданным ошибкам в коде.

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

В Python из соображений эффективности происходит кэширование небольших чисел и коротких строк, что может привести к путанице и неочевидным результатам при использовании этих операторов.

#python
😱6👍4👎1
Возврат нескольких значений из функции

Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать. Ознакомьтесь с приведенным выше примером кода.

#python
👍53
Полезные функции модуля itertools

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

Давайте рассмотрим некоторые полезные функции из этого модуля:

1. itertools.count(): Эта функция создает бесконечный итератор, который генерирует последовательность чисел, начиная с заданного значения. Это удобно использовать, например, при создании уникальных идентификаторов.

2. itertools.cycle(): Эта функция создает итератор, который бесконечно повторяет элементы из исходной последовательности. Это может быть полезно, когда вам нужно обрабатывать данные циклически.

3. itertools.islice(): С помощью этой функции можно получить срез элементов из итератора, подобно срезу для списков. Это позволяет работать с большими итерируемыми объектами без необходимости загрузки их в память целиком.

4. itertools.chain(): Эта функция объединяет несколько итерируемых объектов в один, что упрощает итерацию по ним как по одному объекту.

5. itertools.groupby(): Эта функция позволяет группировать элементы итерируемого объекта на основе заданного ключа. Это особенно полезно при анализе и обработке данных.

И это далеко не все функции, доступные в модуле itertools. Он предоставляет множество возможностей для более эффективной итерации и манипуляции данными.
🔥51
Декоратор override

@override используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.

Это может быть полезно для:

— Повышения читабельности кода, так как сразу видно, какие методы переопределены.

— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.

— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.

#python #decorators
👍6
Читаем текст с картинки используя Tesseract от Google

Google разработал систему Tesseract для извлечения текста из изображений через оптическое распознавание символов.

Pytesseract - это удобная оболочка для системы Tesseract, облегчающая её использование.

Чтобы извлечь текст из изображения, используйте метод image_to_string. Для работы с русским текстом укажите аргумент lang как 'rus'.

Рекомендуется использовать библиотеку pillow для открытия изображений, хотя можно также просто указать путь к файлу.

Пример кода:

from PIL import Image
import pytesseract

# Открываем изображение с помощью Pillow
image = Image.open('image.jpg')

# Используем pytesseract для извлечения текста
text = pytesseract.image_to_string(image, lang='rus')

print(text)

#python #pytesseract
👍81
Функция reduce

В Python модуль functools открывает доступ к функциональным возможностям языка. Одной из замечательных функций в этом модуле является reduce, которая эффективно уменьшает коллекцию данных, последовательно применяя к ним заданную функцию и сохраняя промежуточные результаты.

Примером работы reduce может служить последовательное умножение чисел: сначала 1 умножается на 2, затем полученный результат умножается на 3, и так далее.

#python #functools
👍5
Валидаторы данных

Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.

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

Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.

#python #validators
👍51
Возвращаем значение по указанному ключу с помощью метода setdefault()

Метод setdefault() в Python возвращает значение по указанному ключу из словаря. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.

Метод setdefault() имеет два параметра:

— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.


Если ключ присутствует в словаре, метод возвращает значение, связанное с этим ключом. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.
👍3
RabbitMQ: Брокерская система сообщений для асинхронной обработки данных

RabbitMQ - это мощная и надежная брокерская система сообщений, которая предназначена для обеспечения асинхронного обмена данными между различными компонентами вашего приложения. Эта брокерская система стала широко используемой в индустрии благодаря своей производительности, надежности и гибкости.

Для взаимодействия с RabbitMQ на языке программирования Python часто используется библиотека pika. Pika предоставляет удобный интерфейс для работы с RabbitMQ, позволяя отправлять и принимать сообщения в очереди.

Ключевые характеристики RabbitMQ:

1. Асинхронность: RabbitMQ предоставляет механизм асинхронной обработки сообщений. Это позволяет разным частям вашего приложения обмениваться данными, не блокируя друг друга.

2. Маршрутизация: RabbitMQ обеспечивает гибкую маршрутизацию сообщений с использованием обменников (exchanges) и очередей (queues). Это позволяет точно определить, какие сообщения должны быть отправлены в какие очереди.

3. Надежность: RabbitMQ обеспечивает сохранность данных даже в случае сбоев. Он поддерживает различные стратегии обработки ошибок и перенаправления сообщений.

4. Поддержка множества протоколов: RabbitMQ поддерживает несколько протоколов связи, включая AMQP (Advanced Message Queuing Protocol) и MQTT (Message Queuing Telemetry Transport). Это делает его универсальным и пригодным для различных типов приложений.
🔥3👍2