Python Community
13.1K subscribers
1.24K photos
26 videos
15 files
712 links
Python Community RU - СНГ сообщество Python-разработчиков

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Классы и особые методы

Каждый раз, когда вы создаёте какой-либо класс, он наследуется от 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.
⚡️ База данных MySql

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

Поэтому, чтобы ей воспользоваться, первым делом необходимо установить модуль:

pip install mysql-connector-python

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

Теперь нужно создать соединение с помощью connect (host, user, password ).

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

Для взаимодействия с базой данных потребуется использовать курсор: conn.cursor, а выполнение следующих команд выполняется с помощью execute ("Команда")
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Модуль progress

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

Сделать это можно с помощью строк прогресса, и в Python есть для этого целая библиотека — progress.

Чтобы её установить, нужно выполнить эту команду:

pip install progress

Сам модуль очень легко настраивается, так что вы, при желании, сможете настроить собственную строку прогресса.
⚡️ Графики в консоле

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

В этом нам поможет библиотека bashplotlib, установив её с помощью этой команды:

pip install bashplotlib

• plot_hist — позволит создать одномерный график. Принимает в себя массив значений.

• plot_scatter — создаёт двухмерный график. То есть, он принимает x и y. Также эти два метода могут принимать путь к файлу для получения данных

Не стоит забывать и про консольные команды этой библиотеки — scatter и hist. Они очень помогут в поиске ошибки.
⚡️ Модуль inspect

Всегда было интересно, что происходит «за кулисами» в python? Тогда эта библиотека вам поможет.

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

Самые интересные методы в этой библиотеке:

getsource(object) — возвращает исходный код преданного элемента или, если это невозможно, выбрасывает IOError.

signature(object) — возвращает класс Signature, с помощью которого можно исследовать объект. Если перевести его в строку, то можно увидеть аргументы переданного элемента.

ismodule, isclass, etc... — позволяет проверить объект и уточнить, модуль это, класс или что либо другое.
⚡️ Переменные аргументы

*args или **kwargs
— один из примеров переменных аргументов. Их используют, если разработчик изначально не знает, сколько параметров будет передано функции.

*args — позиционные аргументы, получившие массив для работы. При вызове это выглядит так: func(1,2,3,4).

**kwargs — именованый аргумент. При вызове это выглядит так: func(snake="python", inter="python3"). Учтите, что для своей работы функции нужен словарь.
⚡️ Неявное сравнение строк

Человеческий фактор — неотъемлемая часть при использовании программы пользователем.

Чтобы минимизировать его негативное влияние, воспользуемся библиотекой fuzzywuzzy.

Установка:
pip install fuzzywuzzy

Вот некоторые полезные функции модуля fuzz:

ratio(a, b) — обычное сравнение. При изменение символов шанс совпадения упадёт.

partial_ratio(a, b) — частичное сравнение, поиск строки a внутри b. Также чуствительна к регистру.

WRatio(a, b) — продвинутое сравнение. Оно не учитывает знаки препенания, не делящие строку, и регистр букв.
⚡️Модуль process от fuzzywuzzy

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

Полезные функции этого модуля:

extract(a, arr ) — Ищет внутри arr переменную a и возвращает варианты с лучшим совпадением.

extractOne(a, arr) — Делает тоже самое, что и extract, но возвращает только один элемент с лучшим совпадением.

Также вы можете задать limit — кол-во возвращаемых элементов, с самым высоким совпадением.