Python | Программирование
9.47K subscribers
2.16K photos
3 videos
139 files
1.86K links
Python без границ для всех

Владелец, реклама @Ak_Mihail

Преобрести рекламное размещение: https://telega.in/c/Python_libr
Download Telegram
📌 Класс type() в Python, возвращает тип объекта.

• Класс type() с одним аргументом object возвращает тип объекта. Возвращаемое значение - это как правило, тот же объект, что и возвращаемый object.class.

• Рекомендуется для проверки типа объекта использовать встроенную функцию isinstance(), так как она принимает во внимание подклассы.

Пример использования класса type() при вызове с одним аргументом (код на картинке).

📕 Документация

#урок
5👍4
📌 Класс tuple() в Python, создает или преобразует в кортеж.

• Класс tuple() создает новую неизменяемую последовательность - кортеж из итерируемого объекта, элементы которого идут в том же порядке, что и элементы переданного в качестве аргумента объекта.

• Объектом может быть последовательность или контейнер, который поддерживает итерацию, либо объект итератора.

— Если iterable уже является кортежем, он возвращается без изменений. Например, tuple('abc') возвращает ('a', 'b', 'c') и tuple([1, 2, 3]) вернет (1, 2, 3).
— Если аргумент не указан, конструктор создает новый пустой кортеж ().

Пример создания кортежа, преобразования объектов в кортеж (код на картинке).

📕 Документация

#урок
4👍4
📌 Webhook'и

Альтернативный способ получать обновления от серверов Telegram — вебхуки. Бот говорит, на какую ссылку нужно отправлять данные когда происходит какое-то событие.

Библиотека aiogram использует aiohttp как клиент и сервер. Чтобы проверить работоспособность нужен сервер или белый IP, это есть не у всех, поэтому лучше использовать ngrok.

Вебхуки в Telegram работают только с https ссылками. Если вы не желаете покупать сертификат, можете использовать самоподписанный, но его надо будет передавать в bot.set_webhook().

Гайд по вебхукам от тг

#урок #aiogram
5🔥3
📌 logging

Это встроенная библиотека для ведения логов. По ней есть хороший HOWTO на официальном сайте Python (англ. яз.)

Из него вы узнаете как использовать logging, когда какой уровень использовать, в чём разница между ERROR и CRITICAL и как при этом заставить приложение работать быстро.

#урок
7🔥2
📌 Переходим к новинкам: Router()

Это объект, с помощью которого можно разделить обработчики (handlers) на несколько файлов, а после подключить к основному Dispatcher().

Раньше для этого приходилось делать dispatcher глобальным или писать register_handlers().

#урок #aiogram
4👍2🔥2
📌 Типы обработчики (handlers)

Функции которые обрабатывают сообщения — обработчики. Они принимает определённый тип сообщений и работают с ними.

Бот может принимать все обновления, сообщения, событие о редактировании сообщения, ответа на опрос. Весь список событий тут.

#урок #aiogram
6👍2
📌 Форматирование сообщений

Telegram поддерживает два типа форматирования: HTML и MarkdownV2. Есть ещё Markdown, но он уже устарел.

HTML — форматирование с помощью тегов. Если пользователь отправит <b>Этот тест будет жирным<b>, чтобы не применять форматирование, нужно использовать html.quote().

MarkdownV2 — форматирование с помощью спецсимволов: __underline__, bold text, link on MarkdownV2.

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

Код

#урок #aiogram
5🔥2
📌 Кнопки

Есть два вида кнопок:

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

Инлайн-кнопки — появляются по сообщениями. Могут пересылать людей на определённый URL, отправлять сообщения с данными боту и т.д.

Код

#урок #aiogram
7👍3👎1
📌 Фабрика колбэков

Передавать данные в Inline-кнопки как строки — не удобно. Данные тяжело считывается, код тяжело читается.

Для решения проблемы есть класс CallbackData, с его помощью создаётся класс, который самостоятельно составляет строку и обрабатывает её. Программисту остаётся работать только с объектом.

Код

#урок #aiogram
👍83
📌 Форматирование параграфа, модуль textwrap

• Функция textwrap.fill() принимает текст в качестве входных данных и возвращает отформатированный текст.

• Текст выравнивается по левому краю, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.

📕 Документация

#урок
5🔥3
📌 Middleware

Это код, который выполняется перед тем как запустится обработчик. Так можно контролировать нагрузку, делать Antiflood или собирать статистику.

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

#урок #aiogram
3🔥2
📌 Класс bytearray() в Python, преобразует в массив байтов.

Класс bytearray() возвращает массив байтов bytearray, который является изменяемой последовательностью целых чисел в диапазоне от 0 <= х <256.

Необязательный параметр source можно использовать для инициализации массива несколькими различными способами:

• Если это строка, вы также должны указать параметры кодировки строки или будет ошибка. bytearray() преобразует строку в байты, используя str.encode().
• Если это целое число, то массив будет иметь размер переданного числа и будет инициализирован нулевыми байтами.
• Если это объект, соответствующий интерфейсу буфера, для инициализации массива байтов будет использоваться доступный только для чтения буфер объекта.
• Если это итерация, то это должна быть итерация целых чисел в диапазоне 0 <= x < 256, которые будут используются в качестве начального содержимого массива.
• Без аргумента создается массив размером '0'.

📕 Документация

#урок
3👍3
📌 SQLAlchemy

Object-Relational Mapper (ORM) — представление реляционной базы данных в виде объектов. Больше не придётся писать SQL-код самостоятельно, это сделает библиотека.

SQLAlchemy — самая популярная ORM для Python. Поддерживает асинхронность, так что может спокойно использоваться с aiogram.

#урок
2🔥2