Python Community
12.9K subscribers
1.26K photos
36 videos
15 files
738 links
Python Community RU - СНГ сообщество Python-разработчиков

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Асинхронное программирование

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

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

Для примера — пока вы ждёте приготовление торта (ожидание ответа от сервера) вы можете расставить тарелки (подготовка данных).

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

pip install asyncio
⚡️ Пример асинхроного программирования

Первым делом импортируем библиотеки: asyncio и aiohttp — она используется для асинхроного создания запросов.

После этого создаём функции с ожиданием и отправкой запроса.

Используя get_event_loop() получаем цикл, в котором работает ayncio, создаём список задач, используя create_task(func).

После этого, с помощью run_until_complete(asyncio.wait(tasks)) запускаем цикл и ожидаем его выполнения и закрываем цикл — close().

Скачайте код по ссылке ниже, чтобы увидеть результат.

💾 Скачать пример кода
⚡️ Строки в Python

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

Первое — срез.

С его помощью можно убрать некоторые элементы, причём не только в строках, но и в обычных списках.

Для этого следует использовать:

• someStr[1:9] — эта команда вернёт все значения от первого до девятого индекса

Также, есть несколько методов:

• replace(from, to) — метод, который заменяет все значения в списке с from на to.

• split(symbols) — метод, который позволяет разбить строку на список, используя символы, передаваемые в параметры

• format(*args, *kwargs) — форматирование строки. Очень удобный инструмент: он улучшает читабельность кода и упрощает его.

💾 Скачать пример кода
⚡️Корутины и таски в ассинхроном программировании

Корутины — это функции, определённые с помощью await или async.

Стоит отметить, что обычный вызов функции не выполняет её: для этого стоит использовать asyncio.run() или await.

Таски или задачи — те же самые корутины, но они запускаются одновременно.

Для их создания используют asyncio.create_task(), а виде параметра принимает корутину.

Для запуска программ одновременно, следует использовать asyncio.gather(*tasks).
Try, except, finally

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

В таких случаях поможет конструкция try. Первым делом вы пишем действия внутри, которые собираемся выполнить. В случае, если возникнет ошибка, то except «поймает» её и выполнит указанные действия.

Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Его часто используют для закрытия файлов или соединений.
JSON в python

JSON — JavaScript Object Notation. Это структурированные данные, понятные человеку.

Они, также называемые «словарём» часто используются при создании сайтов и игр.

Этот формат позволяет функциям «общаться» друг с другом, сохранять какие-то значения или представлять Настройки или любые другие данные, понятные пользователю.

Создать словарь можно используя фигурные скобки. Для работы с ними используют модуль json, а метод dumps превращает словарь в строку и позволяет сохранить в файл.

Также, метод load используется для декодирования и позволяет считывать значения с файла напрямую.
⚡️ Пример бота на Telebot.

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

Начнём с того, что у нас есть файл с названием my_token.py. Внутри него хранится переменная с токеном бота, которую мы и импортируем.

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

• start_message()
— отправляет сообщение стартовое сообщение с кнопками внизу

• how_message() — выбирает случайное настроение и отвечает пользователю на его основе

• bot.pooling() — приостанавливает поток и ожидает сообщения от пользователя
👍1
⚡️ Кортеж, список, множество или словарь?

В Python часто встречаются эти понятия, но не все понимают, что это такое и чем они отличаются. Поэтому...

• Список — набор элементов, который может изменяться и индексироваться.

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

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

• Словарь — набор элементов типа ключ — значение. Ключи не могут меняться и являются "индексами", также они не должны повторятся. Значения могут и меняться, и повторятся.
👍1
⚡️ Классы и особые методы

Каждый раз, когда вы создаёте какой-либо класс, он наследуется от object.

Object имеет особые методы:

__init — инициализатор класса. Он вызывается тогда, когда класс создаётся.

str,
repr__— возвращает класс в виде строки. Разница между ними в том, что str должен вернуть боле «красивый» вывод.

__getatribute, setattr__ — вызывается методами getattr и setattr. Позволяют получать и задавать значения переменных классов.

__doc__ — документация для пользования классом. Также её можно создать используя многострочную строку после создания класса.
⚡️ Модули в Python

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

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

Импортировать его можно используя import, а если нужно взять какие-то определённые атрибуты — from module import attribute.

Также, если требуется создать псевдоним, стоит использовать ключевое слово as.

Для лучшего понимания, в одном из наших примеров мы уже импортировали собственные модули.
⚡️ Использование декораторов

Декораторы — это «обёртки» для функций, которые позволяют изменить поведение функции, при этом не меняя её код.

Создаются они очень просто:

По сути, это обычные функции, которые определяют внутри себя другую функцию и возвращают только что созданный код.

Их можно использовать, например, в библиотеке Telethon, о чём мы писали тут.

Стоит отметить, что декораторы немного замедляют вызов функции, запрещают её задекорировать и слегка ухудшают отладку.
⚡️ Сетевые подключения в Python

На самом деле, всё проще, чем может показаться на первый взгляд. Первым делом нам надо импортировать модуль socket. Сделать это и сохранить его можно с помощью socket = socket.socket()

Также, для создания сервера, нужно привязать к нему порт. Воспользуемся bind(("ip", 9999)), который принимает запросы с IP. Его можно оставить пустым, если нужно пропускать любые IP.

После этого ожидаем подключения командой listen(count).

• count — это количество подключений одновременно.

• accept() — метод, который возвращает кортеж с классом соединения и адресом

Теперь нужно просто сделать клиент, используя connect(("ip", 9999)), чтобы подключиться к IP по порту 9999.
⚡️ Что выведет этот код?
⚡️ Типы функций

Всего в python можно выделить три функции: статические, функции класса (методы) и обычные.

Обычные — те, что мы создаём, используя обычный def. Они ничем особым не выделяются.

Методы — создаются внутри классов с помощью того же def. Их особенностью является то, что первым параметром они принимают свой класс. Чаще всего можно заметить их в виде self.

Статические функции — обычные методы, которые просто относятся к какому либо классу. Они не принимают self или что-то подобное. Определяются используя staticmethod.
⚡️ Простой пример бота на Python Telegram Bot

Ранее уже упоминалась эта библиотека как самая хорошая для новичков, ведь освоить её сможет практически каждый.

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

Так, в библиотеке есть некий updater, который контролирует бота.

dispatcher позволяет настроить события и реакции на них, а selector — выбирает, какую функцию нужно вызывать на основе нажатой кнопки.

💾 Скачать пример бота
⚡️ Модуль logging

Без багов в жизни программиста — никуда, поэтому важно уметь их вовремя находить и исправлять.

Для этого существует много способов, но самый удобный из них — логирование. В python с этим поможет модуль logging.

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

Для этого воспользуйтесь logging.basicConfig(filename="sample.log", level=logging.INFO).

Теперь, с помощью getLogger("name") можно выделить логи для специальных приложений/действий.

Также, команда logger.setLevel(type) позволяет настроить уровень записи, например logging.DEBUG.
⚡️ Взаимодействие с окружением

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

Мы воспользовались импортированием собственного модуля, но есть ещё один интересный способ — environment.

Environment — это окружение ОС, внутри которого находятся различные данные. Используется при настройке программ и передачи каких либо значений.

Для получения значений окружения используют os.environ.

Это словарь, из которого можно получить данные с помощью ['some_value'].

Также, вы можете воспользоваться методом os.getenv(key, default), позволяющий настроить значение по умолчанию.
⚡️ Flask — простой веб-фреймворк

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

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

Код, доступный по ссылке ниже создаёт небольшую страницу с просьбой перейти на /hi, которая выводит Hello world.

Для запуска приложения нужно вписать в консоль flask run, не забыв выставить FLASK_APP с названием файла.

Скачать фреймворк можно с помощью pip3 install flask.

💾 Скачать пример кода
⚡️ Регулярные выражения

regex
(или — Regular expressions) — это строка, которая задаёт шаблон поиска подстрок в тексте.

Её очень часто используют для проверки почт, номеров, ip-адресов и т.д.

Немного про синтаксис регулярных выражений:

\d — любая цифра, а \D — любой символ, кроме цифры.

\s — пробел, \w — любая буква и цифра, а _. [...] — выбор одного из символов внутри квадратных скобок или диапазона.
⚡️ Хэширование и с чем его едят

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

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

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

| В общем, возможностей — масса.

Одной из таких функций является md5. Выходная строка равна 128 битам или 16 символам, но чаще всего хэши отображаются в шестнадцатеричной системе исчисления, так что вы увидите 32 символа.

Для работы с хэшированием используйте библиотеку hashlib, которая, помимо md5, поддерживает и SHA.