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
⚡️ База данных 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"). Учтите, что для своей работы функции нужен словарь.
👍1
⚡️ Неявное сравнение строк

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pip install psutil

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

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

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

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

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

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

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

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

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

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

Когда вы пишите 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`ов (&).

Стоит отметить, что значения меньше или равные нулю игнорируются.
👍1
⚡️ Модуль 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, то с конца в начало.
👍1
⚡️ Классы 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 двух массивов одинаковый. Также, для этого вы можете использовать срезы, о которых мы писали ранее.
⚡️ Модуль requests

requests
— это библиотека для создания HTTP запросов. Установить её можно с помощью этой команды:

pip install requests

Возможности requests настолько велики, что на ней можно написать даже свой браузер или бота. Пройдёмся по некоторым командам:

requests.get() — создаёт GET запрос на сервер. Чаще всего, это запрос страницы от пользователя.

Необязательный параметр params принимает список параметров, которые мы видим в ссылке после "?".

requests. post()(без пробела после точки) создаёт POST запрос на сервер. Это какие-либо данные, поступающие от пользователя.

Необязательный параметр data здесь позволяет настроить, какие данные нужно отправлять на сервер.
⚡️ Модуль string

Это — интегрированная библиотека для работы со строками, которая содержит в себе полезные данные и классы.

ascii_letters — все ascii буквы, включая большие и маленькие. Состоит из ascii_lowercase и ascii_uppercase.

printable — Все символы, которые считаются пригодными для печати. Комбиннация digits, ascii_letters, punctuation, whitespace

whitespace
— символы, которые считаются нечитаемыми (пробел, табуляция, перенос на новую строку и так далее)

string.Formatter — класс для форматирования строки. Например, подстановка значений или их ограничение.

format(string, *args, *kwargs) — метод для постановки значений в строку. Он вызывает vformat(string, args, kwargs), который используется чтобы напрямую передать словарь или список без его упаковки.
👍1
⚡️ Форматирование с помощью %

Конечно, вариант с format — лучше и проще, но часто встречается и такой способ форматирования.

%d, %s, %f — после символа процента обычно пишут тип передаваемого объекта. В данном случае, оператор % принимает кортеж.

Самые часто используемые типы — это %d (целое число), %s (строка в нормальном для человека восприятии) и %f (число с плавающей точкой float).

%(value)s, %(value)d — Получает значение из словаря. индекс передан внутри скобочек, а после идёт тип как выше.