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
⚡️ 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 — кол-во возвращаемых элементов, с самым высоким совпадением.
⚡️ Генераторы списка

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

Первый способ, он же самый простой, — использовать цикл for и метод append. Но, он считается медленным и переменная остаётся даже после окончания цикла.

Второй способ — использование map. У него нет никаких «побочных эффектов» и работает он очень быстро.

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

Третий — цикл внутри списка. Это позволяет задать значения прямо во время инициализации списка. Первым делом пишем действия, которые будем совершать над элеметами, а дальше — просто вписываем структуру цикла.
⚡️Данные о системе

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

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

pip install psutil

cpu_count() и cpu_freq() — методы, которые позволяют узнать кол-во ядер процессора и частоту.

virtual_memory() — поможет узнать кол-во доступной оперативной памяти

disk_usage(path) — сколько места занято или свободно в папке path

Помимо этого, в библиотеке есть данные об интернете, сенсорах и о нескольких других параметрах.
⚡️ map() и filter()

Map
мы уже использования для генерации списка. Что map, что filter — это функции для создания нового итератора из списка или словаря.

Map — более производительная замена циклу for для прохода по элементам массива или списка.

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

Первый аргумент — функция, которая выполняет определённые действия с элементами.

Второй — сам итерируемый объект. Чаще всего это список или словарь.
⚡️ Перегрузка операторов сравнения

Перегрузка — это создание собственных методов для реализации какого-либо действия. В данном случае, мы собираемся перегрузить операторы сравнения.

Когда вы пишите x > y, то на самом деле вызывается x.__gt__(y). Для каждого оператора есть свой метод сравнения.

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

Стоит отметить, что при переопределении __eq__, (оператор сравнения ==) два разных экземпляра с одинаковыми значениями будут равны. Если это не то, что вам нужно, тогда используйте is.
⚡️ all() и any()

all
и any — это встроенные фунцкии в python. Их используют, чтобы проверить каждый элемент в итерируемом типе (чаще всего это список) на True.

all(list) — проверяет, все ли элементы равны True. Помимо обычного массива с элементами True/False, вы можете передавать и списки с строками, числами и т.д. Пустой список всегда вернёт True.

any(list) — проверяет, есть ли хотя бы один элемент равный True. Также, как и all может работать со строками или числами. Пустой список, в данном случае, вернёт False.

Пустая строка, 0, всегда равна False.
⚡️ Модуль collections, класс — Counter

Counter — разновиность словаря, который позваляет считать количество элементов (чаще всего — строк).

elements() — возврашает итератор, который выводит все элементы то же количество раз, что и внутри Counter.

most_common() — возвращает кол-во наиболее повторяющихся элементов в виде массива или кортежей. Если необязательный параметр не задан, то вернётся список всех элементов.

Вы также можете добавлять (+), вычитать (-) или выбирать минимальные значения из двух Counter`ов (&).

Стоит отметить, что значения меньше или равные нулю игнорируются.
⚡️ Модуль collections, класс — deque

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

append(x) и appendleft(x) — Добавляет x в конец и начало соответственно.

extend(x) и extendleft(x) — добавляет x в конец и начало, но, в отличие от append(x), итерируемый объект здесь x. Учтите, что extendleft начинает добавлять с последнего элемента.

pop() и popleft() — удаляет последний элемент или первый соответственно и возвращает его.

remove(val) — удаляет val из очереди.

reverse() — разворачивает список

rotate(n) — переносит n элементов из начала в конец. Если n < 0, то с конца в начало.
⚡️ Классы defaultdict, OrderedDict и namedtuple

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

defaultdict — обычный словарь. Он отличается только тем, что вызывает функцию, возвращающую значение.

OrderedDict — словарь, который помнит порядок в котором ему были данны ключи.

popitem(el, last=True) — удаляет элемент. Если last = True, то он становится последним. В другом случае, он просто удалит этот элемент

move_to_end(el, last=True) — добавляет ключ. Если last = True — то в конец, иначе — добавлет в начало.

namedtuple() — метод, который возвращает кортеж, но каждому элементу присваивается своё имя.
⚡️ Функция sorted

Как можно догадаться, это функция нужна для сортировки.

Она может работать со строками, массивами, кортежами, словарями и другими итерируемыми объетами.

Что касается необязательного параметра — reverse, то он позволяет делать сортировку в обратном направлении.

Помимо основных возможностей, функции sorted() можно задать свой способ сортировки.

Для этого используется необязательный параметр key, который принимает в себя функции сортировки.

💾 Скачать пример кода
⚡️ Библиотека NumPy

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

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

np.array(arr) — создаёт numpy массив из arr. Второй, не обязательный параметр — это тип значений.

ndarray.shape — размер массива. Возвращает кортеж, который показывает длину массива по каждой строке.

ndarray.size — количество всех элементвов в массиве. Равняется перемножению всех элементов shape.

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