Управление лимитом рекурсии в Python
В
Однако, используя модуль
В большинстве случаев предпочтительнее использовать итеративные подходы, такие как циклы, вместо рекурсии.
#python #recursion
В
Python
отсутствует оптимизация хвостовой рекурсии, что часто приводит к ошибке RecursionError
при разработке рекурсивных алгоритмов.Однако, используя модуль
sys
, можно узнать и даже изменить максимально допустимую глубину рекурсии. Несмотря на это, следует быть осторожным с увеличением лимита, так как каждый вызов рекурсии потребляет значительное количество памяти.В большинстве случаев предпочтительнее использовать итеративные подходы, такие как циклы, вместо рекурсии.
#python #recursion
pow()
В Python функция pow() используется для вычисления степени числа. Вот как она работает:
где: x — основание степени,
y — показатель степени,
z (необязательный параметр) — модуль, по которому производится вычисление.
Если z указан, то pow(x, y, z) возвращает (x y) % z. Если z не указан, то возвращается x y.
#python
В Python функция pow() используется для вычисления степени числа. Вот как она работает:
result = pow(x, y, z)
где: x — основание степени,
y — показатель степени,
z (необязательный параметр) — модуль, по которому производится вычисление.
Если z указан, то pow(x, y, z) возвращает (x y) % z. Если z не указан, то возвращается x y.
#python
👍2
Автоматизируем браузер с Pyppeteer
Пример использования
#python #pyppeteer
Pyppeteer
— это Python-библиотека, позволяющая управлять браузером с помощью инструмента Puppeteer
, изначально разработанного для Node.js
. Puppeteer
предоставляет возможность автоматизировать взаимодействие с веб-страницами, выполнять сценарии на основе браузера, делать скриншоты, создавать PDF-файлы и многое другое.Пример использования
Pyppeteer
для выполнения поиска в Google и сохранения результатов в виде скриншота доступен на фото.#python #pyppeteer
❤7
Метод setdefault()
Метод
Метод
— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.
Если ключ присутствует в словаре, метод возвращает значение, связанное с этим ключом. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.
#python
Метод
setdefault()
в Python возвращает значение по указанному ключу из словаря. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.Метод
setdefault()
имеет два параметра:— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.
Если ключ присутствует в словаре, метод возвращает значение, связанное с этим ключом. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.
#python
👍5
Функция math.perm()
Он требует указания двух параметров:
Пример использования: расчет количества перестановок трех элементов из пяти. Это демонстрирует, сколько существует вариантов формирования трехэлементных подмножеств из пятерки.
#python
math.perm()
используется для определения количества возможных способов выбора и расположения m элементов из набора n элементов. Этот метод включен в модуль math
.Он требует указания двух параметров:
n
— общее число элементов в наборе, и m
— число элементов в каждой возможной выборке. Результатом выполнения функции является целочисленное значение, представляющее число таких перестановок. Если n
меньше m
, функция возвратит 0.Пример использования: расчет количества перестановок трех элементов из пяти. Это демонстрирует, сколько существует вариантов формирования трехэлементных подмножеств из пятерки.
#python
👍2❤1
Находим опечатки в тексте
Полезный пакет
Под капотом модуль использует алгоритм расстояния Левенштейна. А сам код основан на статье, написанной в блоге Питера Норвига. Короче, реализация интересная, советую поизучать.
Но даже если не вникать в подробности, то пакет использовать крайне легко. Примеры использования класса
Пакет поддерживает 6 языков, включая русский. Но за подробностями отправляю вас читать документацию.
#spellchecker
Полезный пакет
spellchecker
позволяет находить опечатки в тексте и даже дает возможные варианты исправлений. Под капотом модуль использует алгоритм расстояния Левенштейна. А сам код основан на статье, написанной в блоге Питера Норвига. Короче, реализация интересная, советую поизучать.
Но даже если не вникать в подробности, то пакет использовать крайне легко. Примеры использования класса
SpellChecker
и его методов correction
и candidates
показаны на картинке. Пакет поддерживает 6 языков, включая русский. Но за подробностями отправляю вас читать документацию.
#spellchecker
👍2❤1
Обработка видео с помощью MoviePy
Пакет достаточно прост в освоении, и базовые принципы его использования можно увидеть на примере. В данном случае, мы открываем два видеофайла, соединяем их в один, обрезаем получившийся клип, уменьшаем громкость звука и сохраняем итоговый результат.
Стоит учитывать, что обработка видео, особенно больших файлов, может занять значительное время.
#python #moviepy
MoviePy
- это удобный пакет для выполнения различных задач по редактированию видео, включая обрезку и склейку клипов, добавление видеоэффектов и редактирование аудиодорожки.Пакет достаточно прост в освоении, и базовые принципы его использования можно увидеть на примере. В данном случае, мы открываем два видеофайла, соединяем их в один, обрезаем получившийся клип, уменьшаем громкость звука и сохраняем итоговый результат.
Стоит учитывать, что обработка видео, особенно больших файлов, может занять значительное время.
MoviePy
особенно полезен, когда необходимо автоматизировать обработку большого количества видео по единому алгоритму.#python #moviepy
👍7
asyncio: Асинхронное программирование на Python
Для начала работы с
Одной из причин использовать
Дополнительная информация о
asyncio
- это библиотека, разработанная специально для асинхронного программирования и управления параллельными задачами. Она предоставляет инструменты для эффективной работы с асинхронными операциями, позволяя создавать быстрые и отзывчивые приложения.Для начала работы с
asyncio
, вам необходимо импортировать библиотеку, и вы сразу получаете доступ к асинхронным функциям и ключевым словам, таким как async
и await
. Это делает возможным создание асинхронных функций, которые могут выполняться параллельно, без блокировки основного потока выполнения.Одной из причин использовать
asyncio
является его способность эффективно обрабатывать большое количество параллельных задач, что делает его идеальным решением для сетевых операций, ввода/вывода и других операций, которые могут вызвать задержку. Вы можете легко создавать и использовать уже готовые асинхронные HTTP-клиенты (например, с использованием aiohttp
и httpx
), веб-серверы и веб-скраперы, которые будут быстро обрабатывать большие объемы данных.Дополнительная информация о
asyncio
, такая как работа с очередями, ивент-лупы, обработка ошибок и другие возможности, доступна в официальной документации Python.❤7👍3👎1
Зачем использовать pdb
Этот модуль обладает интерфейсом командной строки, с помощью которого можно управлять выполнением кода на Python в реальном времени. Чтобы активировать режим
#python #pdb
pdb
— это интерактивный отладчик Python
, который позволяет пользователю управлять выполнением программы: перемещаться по коду, просматривать и изменять значения переменных, пошагово проходить через код, включая вложенные структуры, устанавливать точки остановок и выполнять другие типичные действия для отладки.Этот модуль обладает интерфейсом командной строки, с помощью которого можно управлять выполнением кода на Python в реальном времени. Чтобы активировать режим
pdb
в вашей программе, достаточно добавить следующую строку кода.#python #pdb
❤5
Работа с форматированием текста
textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.
Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.
Немного о возможностях:
#python #textwrap
textwrap — это стандартная библиотека, которая спользуется для форматирования текста в тех случаях, когда нам нужна красивая печать.
Он предлагает функциональность аналогичную текстовым редакторам и текстовым процессорам.
Немного о возможностях:
textwrap.fill()
— принимает текст и возвращает отформатированный текст, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.textwrap.dedent()
— используется для удаления общего префикса пробела из всех строк в тексте.textwrap.indent()
— используется для добавления текст префикса ко всем строкам в параграфе#python #textwrap
❤2😱2
Управление базой данных в Python с Alembic и SQLAlchemy
Сегодня мы поговорим о том, как можно эффективно управлять структурой вашей базы данных в
Что такое Alembic и SQLAlchemy?
Пример использования
1. Установка библиотек:
2. Инициализация Alembic:
3. Определение моделей данных в
4. Создание миграции:
5. Применение миграции:
Теперь вы можете легко управлять структурой базы данных, создавать новые миграции и применять их, чтобы обновить вашу базу данных.
Полезные ссылки:
- SQLAlchemy: https://www.sqlalchemy.org/
- Alembic: https://alembic.sqlalchemy.org/
#python #sqlalchemy #alembic #базаданных #миграции
Сегодня мы поговорим о том, как можно эффективно управлять структурой вашей базы данных в
Python
с использованием библиотек Alembic
и SQLAlchemy
. Эта связка инструментов позволяет легко мигрировать схему базы данных, управлять версиями и обеспечивает удобный способ разработки и поддержки приложений.Что такое Alembic и SQLAlchemy?
SQLAlchemy
- это мощная библиотека для работы с базами данных в Python. Она предоставляет ORM (Object-Relational Mapping)
, что делает работу с базой данных более Pythonic
. Вы можете определять модели данных, выполнять запросы и манипулировать данными, используя чистый Python
.Alembic
- это инструмент для управления миграциями базы данных. Он позволяет создавать и применять миграции для изменения структуры базы данных, такие как создание таблиц, добавление столбцов или изменение индексов.Пример использования
Alembic
и SQLAlchemy
:1. Установка библиотек:
pip install sqlalchemy alembic
2. Инициализация Alembic:
alembic init my_migration
3. Определение моделей данных в
SQLAlchemy
:from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
4. Создание миграции:
alembic revision --autogenerate -m "Create user table"
5. Применение миграции:
alembic upgrade head
Теперь вы можете легко управлять структурой базы данных, создавать новые миграции и применять их, чтобы обновить вашу базу данных.
Полезные ссылки:
- SQLAlchemy: https://www.sqlalchemy.org/
- Alembic: https://alembic.sqlalchemy.org/
#python #sqlalchemy #alembic #базаданных #миграции
❤5👍1
Pyfiglet — генерация ASCII-арт текста
Pyfiglet — это библиотека Python, которая позволяет легко создавать красивый ASCII-арт текст прямо в консоли. Идеально подходит для добавления стилизованных заголовков и баннеров в ваши консольные приложения.
Отличный способ оживить вывод вашего кода и привлечь внимание к важным сообщениям.
Pyfiglet — это библиотека Python, которая позволяет легко создавать красивый ASCII-арт текст прямо в консоли. Идеально подходит для добавления стилизованных заголовков и баннеров в ваши консольные приложения.
Отличный способ оживить вывод вашего кода и привлечь внимание к важным сообщениям.
❤1
PyOxidizer
PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.
#python
PyOxidizer — это инструмент, позволяющий упаковать Python-проект в единый исполняемый файл, включающий интерпретатор Python, все необходимые библиотеки и ресурсы. Это позволяет запускать ваши приложения без необходимости предварительной установки Python или каких-либо зависимостей.
#python
🔥10👍4❤1
dict.get()
Синтаксис метода
#python
dict.get()
— это метод словаря, который используется для получения значения по заданному ключу. Однако, в отличие от обращения к элементу словаря с использованием квадратных скобок (dict[key]
), метод get()
предоставляет дополнительную возможность задать значение по умолчанию, которое будет возвращено, если ключ не найден в словаре.Синтаксис метода
get()
выглядит так:value = dict.get(key, default)
key
: Ключ, по которому производится поиск в словаре.default
(необязательный): Значение, которое будет возвращено, если ключ не найден в словаре. Если default
не указан, и ключ не найден, метод вернет None
.#python
👍7
Упрощенная работа с JSON
Казалось бы, куда еще проще, но есть один интересный пакет
Основные примеры использования показаны на картинке, там нет ничего сложного. Метод
Вообще возможностей у пакета достаточно, поэтому он достоен изучения и применения в проектах. Подробнее советую почитать в документации.
#json #jmespath
Казалось бы, куда еще проще, но есть один интересный пакет
JMESpath
, который позволяет декларативно указать, как извлекать элементы из документа JSON. Основные примеры использования показаны на картинке, там нет ничего сложного. Метод
search
принимает паттерн, по которому требуется извлечь данные, а также словарь (который в общем-то похож на JSON). Вообще возможностей у пакета достаточно, поэтому он достоен изучения и применения в проектах. Подробнее советую почитать в документации.
#json #jmespath
❤4
Порядок разрешения методов
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
#классы
В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.
Этот порядок можно получить при помощи атрибута
__mro__
. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value
, Python будет искать сначала в классе A
, далее в B
, затем в C
и в самом конце в object
. Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.
#классы
👍1
Перечисления
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
Из документации можно узнать о том, что
Также можно задать геттер через
#enum
Python поддерживает простой механизм работы с перечислениями, которые ещё называют
enum
. Подобные перечисления удобно использовать для хранения списков констант. Из документации можно узнать о том, что
Enum
— это набор символических имён, привязанных к уникальным, неизменным значениям. Члены одного перечисления можно сравнивать на идентичность.Также можно задать геттер через
@property
, который используют для получения перечислений в других форматах. В примере реализовано перечисление цветов в RGB, а через геттер их можно получить в формате hex
.#enum
👍5❤1
Время исполнения программы
Зачастую требуется замерить время исполнения кода, чтобы понять, насколько оптимальное решение было выбрано.
Как вариант, можно воспользоваться функцией
Перед исполнением нашего кода сохраним начальное время, а после — конечное. Путем вычета первого из второго и получим время исполнения программы.
Использование
#time
Зачастую требуется замерить время исполнения кода, чтобы понять, насколько оптимальное решение было выбрано.
Как вариант, можно воспользоваться функцией
time
из модуля time
, которая возвращает текущее время в формате Unix.Перед исполнением нашего кода сохраним начальное время, а после — конечное. Путем вычета первого из второго и получим время исполнения программы.
Использование
time.time()
— не самый точный и лучший вариант, но, например, для быстрого сравнения двух разных частей кода подходит хорошо.#time
🔥1
Упрощение создания операторов сравнения
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
В таком случае достаточно реализовать в классе только
#классы
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
__lt__
, __le__
, __eq__
, __ne__
, __gt__
, __ge__
.Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
total_ordering
из пакета functools
.В таком случае достаточно реализовать в классе только
__lt__
и __eq__
. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.#классы
👍2
Хеширование в Python используя hashlib
Библиотека
Пример кода:
Библиотека
#python #hashlib
Библиотека
hashlib
предоставляет алгоритмы хеширования, которые позволяют создавать уникальные хеш-суммы для данных. Это полезно для проверки целостности файлов, хранения паролей в безопасной форме и других задач безопасности данных.Пример кода:
import hashlibВ этом примере мы используем алгоритм
# Пример хеширования строки с использованием SHA-256
data_to_hash = "Hello, World!"
hashed_data = hashlib.sha256(data_to_hash.encode()).hexdigest()
print(f"Исходные данные: {data_to_hash}")
print(f"Хеш-сумма (SHA-256): {hashed_data}")
SHA-256
из библиотеки hashlib
для создания хеш-суммы строки "Hello, World!". Результат выводится в шестнадцатеричном формате.Библиотека
hashlib
является одним из лучших инструментов для обеспечения безопасности данных в Python
. Путем использования различных алгоритмов хеширования, таких как MD5
, SHA-256
и других, вы можете обеспечить целостность данных и повысить уровень безопасности ваших приложений.#python #hashlib