⚡️ База данных MySql
Если вкратце, то данные с базы данных записываются на диск, а значит — они сохраняются даже после перезагрузки устройства.
Поэтому, чтобы ей воспользоваться, первым делом необходимо установить модуль:
Теперь нужно создать соединение с помощью connect (host, user, password ).
Вы также можете создать пул соединений с помощью pooling.MySQLConnectionPool(), что позволит базе данных работать с многопоточным приложением.
Для взаимодействия с базой данных потребуется использовать курсор: conn.cursor, а выполнение следующих команд выполняется с помощью execute ("Команда")
Если вкратце, то данные с базы данных записываются на диск, а значит — они сохраняются даже после перезагрузки устройства.
Поэтому, чтобы ей воспользоваться, первым делом необходимо установить модуль:
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.
Чтобы её установить, нужно выполнить эту команду:
Показать пользователю, что программа выполняет работу и сколько ещё осталось до конца — жизненно необходимо.
Сделать это можно с помощью строк прогресса, и в Python есть для этого целая библиотека — progress.
Чтобы её установить, нужно выполнить эту команду:
pip install progress
Сам модуль очень легко настраивается, так что вы, при желании, сможете настроить собственную строку прогресса.⚡️ Графики в консоле
Это очень полезно для тех, кто хочет изучать нейронные сети. К примеру, вы можете использовать консоль для построения графика ошибки.
В этом нам поможет библиотека bashplotlib, установив её с помощью этой команды:
• plot_scatter — создаёт двухмерный график. То есть, он принимает x и y. Также эти два метода могут принимать путь к файлу для получения данных
Не стоит забывать и про консольные команды этой библиотеки — scatter и hist. Они очень помогут в поиске ошибки.
Это очень полезно для тех, кто хочет изучать нейронные сети. К примеру, вы можете использовать консоль для построения графика ошибки.
В этом нам поможет библиотека bashplotlib, установив её с помощью этой команды:
pip install bashplotlib
• plot_hist — позволит создать одномерный график. Принимает в себя массив значений. • plot_scatter — создаёт двухмерный график. То есть, он принимает x и y. Также эти два метода могут принимать путь к файлу для получения данных
Не стоит забывать и про консольные команды этой библиотеки — scatter и hist. Они очень помогут в поиске ошибки.
⚡️ Модуль inspect
Всегда было интересно, что происходит «за кулисами» в python? Тогда эта библиотека вам поможет.
Модуль уже установлен в вашей системе, так что его достаточно просто импортировать, без дополнительной установки.
Самые интересные методы в этой библиотеке:
getsource(object) — возвращает исходный код преданного элемента или, если это невозможно, выбрасывает IOError.
signature(object) — возвращает класс Signature, с помощью которого можно исследовать объект. Если перевести его в строку, то можно увидеть аргументы переданного элемента.
ismodule, isclass, etc... — позволяет проверить объект и уточнить, модуль это, класс или что либо другое.
Всегда было интересно, что происходит «за кулисами» в python? Тогда эта библиотека вам поможет.
Модуль уже установлен в вашей системе, так что его достаточно просто импортировать, без дополнительной установки.
Самые интересные методы в этой библиотеке:
getsource(object) — возвращает исходный код преданного элемента или, если это невозможно, выбрасывает IOError.
signature(object) — возвращает класс Signature, с помощью которого можно исследовать объект. Если перевести его в строку, то можно увидеть аргументы переданного элемента.
ismodule, isclass, etc... — позволяет проверить объект и уточнить, модуль это, класс или что либо другое.
⚡️ Переменные аргументы
*args или **kwargs — один из примеров переменных аргументов. Их используют, если разработчик изначально не знает, сколько параметров будет передано функции.
*args — позиционные аргументы, получившие массив для работы. При вызове это выглядит так: func(1,2,3,4).
**kwargs — именованый аргумент. При вызове это выглядит так: func(snake="python", inter="python3"). Учтите, что для своей работы функции нужен словарь.
*args или **kwargs — один из примеров переменных аргументов. Их используют, если разработчик изначально не знает, сколько параметров будет передано функции.
*args — позиционные аргументы, получившие массив для работы. При вызове это выглядит так: func(1,2,3,4).
**kwargs — именованый аргумент. При вызове это выглядит так: func(snake="python", inter="python3"). Учтите, что для своей работы функции нужен словарь.
👍1
⚡️ Неявное сравнение строк
Человеческий фактор — неотъемлемая часть при использовании программы пользователем.
Чтобы минимизировать его негативное влияние, воспользуемся библиотекой fuzzywuzzy.
Установка:
ratio(a, b) — обычное сравнение. При изменение символов шанс совпадения упадёт.
partial_ratio(a, b) — частичное сравнение, поиск строки a внутри b. Также чуствительна к регистру.
WRatio(a, b) — продвинутое сравнение. Оно не учитывает знаки препенания, не делящие строку, и регистр букв.
Человеческий фактор — неотъемлемая часть при использовании программы пользователем.
Чтобы минимизировать его негативное влияние, воспользуемся библиотекой 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 — кол-во возвращаемых элементов, с самым высоким совпадением.
Этот модуль используют для не явного сравнения строк в списке, о чём мы и рассказывали в этом посте.
Полезные функции этого модуля:
extract(a, arr ) — Ищет внутри arr переменную a и возвращает варианты с лучшим совпадением.
extractOne(a, arr) — Делает тоже самое, что и extract, но возвращает только один элемент с лучшим совпадением.
Также вы можете задать limit — кол-во возвращаемых элементов, с самым высоким совпадением.
⚡️ Генераторы списка
Иногда можно встретится с задачей, в которой нужно сгенерировать массив или обновить значения на основе имеющихся значений. Что ж, в python, как обычно, существует несколько способов это сделать.
Первый способ, он же самый простой, — использовать цикл for и метод append. Но, он считается медленным и переменная остаётся даже после окончания цикла.
Второй способ — использование map. У него нет никаких «побочных эффектов» и работает он очень быстро.
На вход принимает функцию или лямбду и начальный массив. Далее — проходит через каждый элемент, передаёт его функции и сохраняет результат.
Третий — цикл внутри списка. Это позволяет задать значения прямо во время инициализации списка. Первым делом пишем действия, которые будем совершать над элеметами, а дальше — просто вписываем структуру цикла.
Иногда можно встретится с задачей, в которой нужно сгенерировать массив или обновить значения на основе имеющихся значений. Что ж, в python, как обычно, существует несколько способов это сделать.
Первый способ, он же самый простой, — использовать цикл for и метод append. Но, он считается медленным и переменная остаётся даже после окончания цикла.
Второй способ — использование map. У него нет никаких «побочных эффектов» и работает он очень быстро.
На вход принимает функцию или лямбду и начальный массив. Далее — проходит через каждый элемент, передаёт его функции и сохраняет результат.
Третий — цикл внутри списка. Это позволяет задать значения прямо во время инициализации списка. Первым делом пишем действия, которые будем совершать над элеметами, а дальше — просто вписываем структуру цикла.
👍1
⚡️Данные о системе
Батарея, количество ядер процессора, виртуальная память — всё это может быть полезно при создании программы или, например, для системных администраторов.
Для получения всех этих значений воспользуемся командой psutil. Скачать такую библиотеку можно с помощью команды:
virtual_memory() — поможет узнать кол-во доступной оперативной памяти
disk_usage(path) — сколько места занято или свободно в папке path
Помимо этого, в библиотеке есть данные об интернете, сенсорах и о нескольких других параметрах.
Батарея, количество ядер процессора, виртуальная память — всё это может быть полезно при создании программы или, например, для системных администраторов.
Для получения всех этих значений воспользуемся командой psutil. Скачать такую библиотеку можно с помощью команды:
pip install psutil
cpu_count() и cpu_freq() — методы, которые позволяют узнать кол-во ядер процессора и частоту.virtual_memory() — поможет узнать кол-во доступной оперативной памяти
disk_usage(path) — сколько места занято или свободно в папке path
Помимо этого, в библиотеке есть данные об интернете, сенсорах и о нескольких других параметрах.
⚡️ map() и filter()
Map мы уже использования для генерации списка. Что map, что filter — это функции для создания нового итератора из списка или словаря.
Map — более производительная замена циклу for для прохода по элементам массива или списка.
Filter — немного быстрее, чем map. В маленьких массивах это тяжело заметить, но при работе с большими данными разница существенна.
Первый аргумент — функция, которая выполняет определённые действия с элементами.
Второй — сам итерируемый объект. Чаще всего это список или словарь.
Map мы уже использования для генерации списка. Что map, что filter — это функции для создания нового итератора из списка или словаря.
Map — более производительная замена циклу for для прохода по элементам массива или списка.
Filter — немного быстрее, чем map. В маленьких массивах это тяжело заметить, но при работе с большими данными разница существенна.
Первый аргумент — функция, которая выполняет определённые действия с элементами.
Второй — сам итерируемый объект. Чаще всего это список или словарь.
👍1
⚡️ Перегрузка операторов сравнения
Перегрузка — это создание собственных методов для реализации какого-либо действия. В данном случае, мы собираемся перегрузить операторы сравнения.
Когда вы пишите x > y, то на самом деле вызывается x.__gt__(y). Для каждого оператора есть свой метод сравнения.
При создании класса мы можем переопределить эти методы. В примере выше мы сравниваем не два класса, а числа внутри их.
Стоит отметить, что при переопределении __eq__, (оператор сравнения ==) два разных экземпляра с одинаковыми значениями будут равны. Если это не то, что вам нужно, тогда используйте is.
Перегрузка — это создание собственных методов для реализации какого-либо действия. В данном случае, мы собираемся перегрузить операторы сравнения.
Когда вы пишите 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.
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`ов (&).
Стоит отметить, что значения меньше или равные нулю игнорируются.
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, то с конца в начало.
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() — метод, который возвращает кортеж, но каждому элементу присваивается своё имя.
Все они относятся к тому же модулю, о котором мы рассказывали вчера — collections.
defaultdict — обычный словарь. Он отличается только тем, что вызывает функцию, возвращающую значение.
OrderedDict — словарь, который помнит порядок в котором ему были данны ключи.
popitem(el, last=True) — удаляет элемент. Если last = True, то он становится последним. В другом случае, он просто удалит этот элемент
move_to_end(el, last=True) — добавляет ключ. Если last = True — то в конец, иначе — добавлет в начало.
namedtuple() — метод, который возвращает кортеж, но каждому элементу присваивается своё имя.
⚡️ Функция sorted
Как можно догадаться, это функция нужна для сортировки.
Она может работать со строками, массивами, кортежами, словарями и другими итерируемыми объетами.
Что касается необязательного параметра — reverse, то он позволяет делать сортировку в обратном направлении.
Помимо основных возможностей, функции sorted() можно задать свой способ сортировки.
Для этого используется необязательный параметр key, который принимает в себя функции сортировки.
💾 Скачать пример кода
Как можно догадаться, это функция нужна для сортировки.
Она может работать со строками, массивами, кортежами, словарями и другими итерируемыми объетами.
Что касается необязательного параметра — reverse, то он позволяет делать сортировку в обратном направлении.
Помимо основных возможностей, функции sorted() можно задать свой способ сортировки.
Для этого используется необязательный параметр key, который принимает в себя функции сортировки.
💾 Скачать пример кода
⚡️ Библиотека NumPy
NumPy — модуль, позволяющий добавить поддержку многомерных матриц в python и упрощает работу с другими математическими операциями.
Работать с NumPy намного удобнее и быстрее. Например, перемножение всех элементов матрицы на другую матрицу делается всего одной строчкой.
np.array(arr) — создаёт numpy массив из arr. Второй, не обязательный параметр — это тип значений.
ndarray.shape — размер массива. Возвращает кортеж, который показывает длину массива по каждой строке.
ndarray.size — количество всех элементвов в массиве. Равняется перемножению всех элементов shape.
Базовые операции, как сложение, вычитание, произведение происходит лишь если shape двух массивов одинаковый. Также, для этого вы можете использовать срезы, о которых мы писали ранее.
NumPy — модуль, позволяющий добавить поддержку многомерных матриц в python и упрощает работу с другими математическими операциями.
Работать с NumPy намного удобнее и быстрее. Например, перемножение всех элементов матрицы на другую матрицу делается всего одной строчкой.
np.array(arr) — создаёт numpy массив из arr. Второй, не обязательный параметр — это тип значений.
ndarray.shape — размер массива. Возвращает кортеж, который показывает длину массива по каждой строке.
ndarray.size — количество всех элементвов в массиве. Равняется перемножению всех элементов shape.
Базовые операции, как сложение, вычитание, произведение происходит лишь если shape двух массивов одинаковый. Также, для этого вы можете использовать срезы, о которых мы писали ранее.
⚡️ Модуль requests
requests — это библиотека для создания HTTP запросов. Установить её можно с помощью этой команды:
requests.get() — создаёт GET запрос на сервер. Чаще всего, это запрос страницы от пользователя.
Необязательный параметр params принимает список параметров, которые мы видим в ссылке после "?".
requests. post() — (без пробела после точки) создаёт POST запрос на сервер. Это какие-либо данные, поступающие от пользователя.
Необязательный параметр data здесь позволяет настроить, какие данные нужно отправлять на сервер.
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), который используется чтобы напрямую передать словарь или список без его упаковки.
Это — интегрированная библиотека для работы со строками, которая содержит в себе полезные данные и классы.
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 — Получает значение из словаря. индекс передан внутри скобочек, а после идёт тип как выше.
Конечно, вариант с format — лучше и проще, но часто встречается и такой способ форматирования.
%d, %s, %f — после символа процента обычно пишут тип передаваемого объекта. В данном случае, оператор % принимает кортеж.
Самые часто используемые типы — это %d (целое число), %s (строка в нормальном для человека восприятии) и %f (число с плавающей точкой float).
%(value)s, %(value)d — Получает значение из словаря. индекс передан внутри скобочек, а после идёт тип как выше.