Деструкторы
При уничтожении экземпляра класса в большинстве языков вызывается специальный метод, который называется деструктор.
В Python деструктор можно переопределять с помощью магического метода
Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.
#классы
При уничтожении экземпляра класса в большинстве языков вызывается специальный метод, который называется деструктор.
В Python деструктор можно переопределять с помощью магического метода
__del__, который вызовется автоматически при удалении объекта.Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.
#классы
👎1
Получение срезов итераторов
Если вы попытаетесь получить срез итератора, то столкнётесь с ошибкой TypeError, сообщающей о том, что на объект-генератор нельзя оформить подписку. Однако эта проблема поддаётся решению (см картинку).
Воспользовавшись методом itertools.islice, можно создать объект islice, который представляет собой итератор, выдающий нужные элементы. Однако здесь важно отметить то, что эта конструкция использует все элементы генератора вплоть до начала среза и все элементы в объекте islice.
#python
Если вы попытаетесь получить срез итератора, то столкнётесь с ошибкой TypeError, сообщающей о том, что на объект-генератор нельзя оформить подписку. Однако эта проблема поддаётся решению (см картинку).
Воспользовавшись методом itertools.islice, можно создать объект islice, который представляет собой итератор, выдающий нужные элементы. Однако здесь важно отметить то, что эта конструкция использует все элементы генератора вплоть до начала среза и все элементы в объекте islice.
#python
👎1
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
❤3👎1
Делегирующие генераторы
Давайте создадим простенькую генераторную функцию
А также ещё одну генераторную функцию
Цикл, который можно написать в
Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
#генераторы
Давайте создадим простенькую генераторную функцию
subgen, которая будет возвращать числа от 0 до переданного аргумента.А также ещё одну генераторную функцию
delegator, которая будет возвращать числа из итерируемого объекта source, который передадим в качестве аргумента.Цикл, который можно написать в
delegator, можно заменить всего лишь одной строчкой. То есть yield from заменяет цикл for, в котором только возвращаются значения через yield.Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации
delegator можно назвать делигирующим генератором, а subgen подгенератором.#генераторы
👍2👎2
Упрощение создания операторов сравнения
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
В таком случае достаточно реализовать в классе только
#классы
Для создания объектов с поддержкой операторов сравнения в классе обычно требуется реализовать большое количество магических методов, а именно –
__lt__, __le__, __eq__, __ne__, __gt__, __ge__.Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор
total_ordering из пакета functools.В таком случае достаточно реализовать в классе только
__lt__ и __eq__. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.#классы
👎2👍1
Создание дочернего процесса
Метод
Кстати, получается интересный случай, в коде примера выполняется и блок
#os #fork #процессы
Метод
os.fork() создаёт дочерний процесс в том же месте кода, вызывая системную функцию fork(), и возвращает PID (Process Identifier), который равен PID дочернего процесса в родительском процессе и нулю в новом.Кстати, получается интересный случай, в коде примера выполняется и блок
if, и else. Если не знать про os.fork() и посмотреть вывод подобного кода, то возникнет много вопросов.#os #fork #процессы
👎2❤1
Итерируемый счетчик
Еще один классный итератор из
В аргументах можно задать значения
Обычно
#itertools
Еще один классный итератор из
itertools — это count, который генерирует бесконечную последовательность чисел.В аргументах можно задать значения
start и step: первый отвечает за начальное значение, а второе за шаг, как и в range.Обычно
count редко используют с циклом for. Чаще можно встретить случаи с функциями типа zip или map.#itertools
❤2👎1
Использование внешних процессов в Python с помощью subprocess
В мире программирования бывают моменты, когда необходимо взаимодействовать с внешними программами из кода на
Что такое
Пример использования
В данном примере мы использовали
Передача данных и получение результата:
В данном примере мы использовали команду
#python #subprocess
В мире программирования бывают моменты, когда необходимо взаимодействовать с внешними программами из кода на
Python. Для этих задач отлично подходит модуль subprocess, который предоставляет удобный способ запуска внешних процессов, передачи данных им и получения результатов выполнения.Что такое
subprocess?subprocess - это модуль Python, который предоставляет множество возможностей для запуска новых процессов, подключения к существующим процессам, а также обмена данными между вашим кодом и внешними программами.Пример использования
subprocess:import subprocess
# Простой пример: выполнение команды "ls" в командной строке
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали
subprocess.run для выполнения команды "ls -l". Параметр stdout=subprocess.PIPE указывает на перенаправление вывода команды в переменную result.stdout. Параметр text=True гарантирует, что вывод будет в текстовом формате.Передача данных и получение результата:
import subprocess
# Передача данных в команду и получение результата
input_data = "Hello, subprocess!"
result = subprocess.run(['echo', input_data], stdout=subprocess.PIPE, text=True)
# Вывод результата выполнения команды
print(result.stdout)
В данном примере мы использовали команду
echo для вывода переданных данных. subprocess.run позволяет передавать данные в команду через параметр input.subprocess также предоставляет множество других функций для более сложных сценариев взаимодействия с процессами, таких как запуск процесса в фоновом режиме, обработка ошибок, а также потоковый вывод данных.#python #subprocess
❤5👎1
Выходные, которые настроят твой IT-путь – Сбер. Среда Weekend, 15-16 августа
Это нишевый фестиваль для своих: тех, кто уже в комьюнити, и тех, кто только ищет себя в IT.
Мы создали три среды — ты точно найдёшь свою:
• human.env — честные, смешные и местами беспощадные стендапы и рассказы про работу.
• growth.env — воркшопы и дискуссии от IT‑сообществ Сбера. С тебя — вопрос, с команды — ответ.
• party.env — DIY, танцы и большая финальная вечеринка с музыкальными хедлайнерами.
Выбирай свою среду — или пройди все три: пусть эти выходные станут началом чего‑то большего!
Это нишевый фестиваль для своих: тех, кто уже в комьюнити, и тех, кто только ищет себя в IT.
Мы создали три среды — ты точно найдёшь свою:
• human.env — честные, смешные и местами беспощадные стендапы и рассказы про работу.
• growth.env — воркшопы и дискуссии от IT‑сообществ Сбера. С тебя — вопрос, с команды — ответ.
• party.env — DIY, танцы и большая финальная вечеринка с музыкальными хедлайнерами.
Выбирай свою среду — или пройди все три: пусть эти выходные станут началом чего‑то большего!
👎2
Константы пакета string
Встроенный модуль
Сейчас поговорим про константы этого модуля. Из интересного стоит выделить
Применение подобных констант может быть не очевидно с первого взгляда. Но подобные значения часто используются, например, в работе с алфавитом или в условном генераторе паролей.
К тому же часто бывает, что разработчики делают костыли и создают свои собственные константы в коде вместо того, чтобы импортировать уже готовые из модуля
#строки #string
Встроенный модуль
string предоставляет расширенный функционал для работы со строками. Про форматируемые шаблоны из этого пакета мы рассказывали в прошлом посте. Сейчас поговорим про константы этого модуля. Из интересного стоит выделить
ascii_letters, punctuation, digits и whitespace — символы ascii, знаки пунктуации, цифры и пробельные символы. Применение подобных констант может быть не очевидно с первого взгляда. Но подобные значения часто используются, например, в работе с алфавитом или в условном генераторе паролей.
К тому же часто бывает, что разработчики делают костыли и создают свои собственные константы в коде вместо того, чтобы импортировать уже готовые из модуля
string. #строки #string
👎1
Работаем с zip архивами
Для упрощения работы с zip файлами можно использовать встроенный модуль
Просмотреть содержимое архива можно с помощью функции
Также этот модуль позволяет создавать свои zip архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию.
#zipfile
Для упрощения работы с zip файлами можно использовать встроенный модуль
zipfile. Если кто не помнит, то zip файл – это архив, содержащий сжатые файлы. Просмотреть содержимое архива можно с помощью функции
printdir, а извлечь все файлы можно вызвав extractfile. Также этот модуль позволяет создавать свои zip архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию.
#zipfile
👎1
Преобразование аудиофайлов с помощью Python
В
Для начала работы с файлом, используем метод
Когда файл загружен, для его конвертации и сохранения в желаемом формате применяем метод
#python #pydub
В
Python существует множество способов для выполнения конвертации аудиофайлов из одного формата в другой. Одним из наиболее удобных инструментов для этого является модуль pydub. Этот модуль служит оболочкой для ffmpeg и предоставляет возможности по загрузке, редактированию и сохранению аудиофайлов в различных форматах, поддерживаемых ffmpeg.Для начала работы с файлом, используем метод
from_ с указанием необходимого формата из класса AudioSegment, или же обратимся к более универсальному методу from_file, предоставляя путь к файлу и его формат.Когда файл загружен, для его конвертации и сохранения в желаемом формате применяем метод
export объекта класса AudioSegment, созданного на предыдущем шаге.#python #pydub
👎2
One Day Offer для Python-разработчиков!
15 августа открываем двери в команду Agent Execution Framework
Команда создаёт платформу для GenAI-агентов в банке — чтобы ИИ надёжно работал в реальных финпроцессах: безопасно, под высокой нагрузкой и с пользой.
Чем предстоит заниматься:
• развивать backend на Python
• подключать LLM, инструменты, базы знаний и RAG
• строить пайплайны оценки качества агентов
• участвовать в архитектуре и ревью кода
Встречаемся 15 августа онлайн.
Регистрируйся по ссылке
15 августа открываем двери в команду Agent Execution Framework
Команда создаёт платформу для GenAI-агентов в банке — чтобы ИИ надёжно работал в реальных финпроцессах: безопасно, под высокой нагрузкой и с пользой.
Чем предстоит заниматься:
• развивать backend на Python
• подключать LLM, инструменты, базы знаний и RAG
• строить пайплайны оценки качества агентов
• участвовать в архитектуре и ревью кода
Встречаемся 15 августа онлайн.
Регистрируйся по ссылке
❤2👍1👎1🔥1
Загрузка файлов асинхронно
Если у нас есть список
Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
С помощью метода
Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
Если у нас есть список
URL картинок для загрузки, использование простого цикла for позволит нам загрузить их последовательно, по одной за раз.Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
ThreadPoolExecutor из модуля concurrent.futures. Этот инструмент позволяет выполнить функцию загрузки в нескольких параллельных потоках, где в конструкторе необходимо указать максимальное количество потоков для одновременного выполнения.С помощью метода
.map(download, urls) можно развернуть функцию загрузки на каждый URL из списка, обеспечивая их параллельную обработку.Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
👎2👍1
Вычисление размера объектов
Для вычисления размера объекта мы можем использовать функцию
И хотя все
Аргумент
Функция
#getsizeof
Для вычисления размера объекта мы можем использовать функцию
getsizeof(object[, default]) из модуля sys. Так как в python все по сути является объектами, то и вычислить размер в памяти мы можем у любого такого объекта.И хотя все
built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.Аргумент
default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError .Функция
getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные служебные данные сборщика мусора.#getsizeof
👎1