Python Academy
Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Показати більше📈 Аналітичний огляд Telegram-каналу Python Academy
Канал Python Academy (@python_academy) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 44 530 підписників, посідаючи 2 929 місце в категорії Технології та додатки та 14 041 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 44 530 підписників.
За останніми даними від 26 серпня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 152, а за останні 24 години на -7, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 4.81%. Протягом перших 24 годин після публікації контент зазвичай збирає 2.33% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 2 140 переглядів. Протягом першої доби публікація в середньому набирає 1 039 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 3.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як строка, модуль, документация, taskiq, yaml.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Python Academy — один канал вместо тысячи учебников
Чат канала: @python_academy_chat
Сотрудничество: @zubar89
Канал включён в перечень РКН: https://rkn.link/TVu”
Завдяки високій частоті оновлень (останні дані отримано 27 серпня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
Speedtest методы download() и upload() выдают соответственно скорость скачивания и загрузки данных.
Методы отдают результат в байтах, поэтому для наглядности в примере я перевел все данные в мегабайты при выводе.
#speedtesttuple, по своей сути, являются неизменяемыми списками. Структура данных удобная, но мы можем получать данные, используя только числовые индексы.
Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи namedtuple из collections.
Каждый объект в именованном кортеже может быть доступен через уникальный, удобный для чтения человеком, идентификатор. При этом вся функциональность от обычных кортежей сохраняется.
#namedtuplegetsizeof(object[, default]) из модуля sys. Так как в python все по сути является объектами, то и вычислить размер в памяти мы можем у любого такого объекта.
И хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.
Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError .
Функция getsizeof вызывает метод __sizeof__ объекта и добавляет дополнительные служебные данные сборщика мусора.
#getsizeofURL картинок для загрузки, использование простого цикла for позволит нам загрузить их последовательно, по одной за раз.
Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать ThreadPoolExecutor из модуля concurrent.futures. Этот инструмент позволяет выполнить функцию загрузки в нескольких параллельных потоках, где в конструкторе необходимо указать максимальное количество потоков для одновременного выполнения.
С помощью метода .map(download, urls) можно развернуть функцию загрузки на каждый URL из списка, обеспечивая их параллельную обработку.
Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threadingPython существует множество способов для выполнения конвертации аудиофайлов из одного формата в другой. Одним из наиболее удобных инструментов для этого является модуль pydub. Этот модуль служит оболочкой для ffmpeg и предоставляет возможности по загрузке, редактированию и сохранению аудиофайлов в различных форматах, поддерживаемых ffmpeg.
Для начала работы с файлом, используем метод from_ с указанием необходимого формата из класса AudioSegment, или же обратимся к более универсальному методу from_file, предоставляя путь к файлу и его формат.
Когда файл загружен, для его конвертации и сохранения в желаемом формате применяем метод export объекта класса AudioSegment, созданного на предыдущем шаге.
#python #pydubzipfile. Если кто не помнит, то zip файл – это архив, содержащий сжатые файлы.
Просмотреть содержимое архива можно с помощью функции printdir, а извлечь все файлы можно вызвав extractfile.
Также этот модуль позволяет создавать свои zip архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию.
#zipfilestring предоставляет расширенный функционал для работы со строками. Про форматируемые шаблоны из этого пакета мы рассказывали в прошлом посте.
Сейчас поговорим про константы этого модуля. Из интересного стоит выделить ascii_letters, punctuation, digits и whitespace — символы ascii, знаки пунктуации, цифры и пробельные символы.
Применение подобных констант может быть не очевидно с первого взгляда. Но подобные значения часто используются, например, в работе с алфавитом или в условном генераторе паролей.
К тому же часто бывает, что разработчики делают костыли и создают свои собственные константы в коде вместо того, чтобы импортировать уже готовые из модуля string.
#строки #stringPython. Для этих задач отлично подходит модуль 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 #subprocessitertools — это count, который генерирует бесконечную последовательность чисел.
В аргументах можно задать значения start и step: первый отвечает за начальное значение, а второе за шаг, как и в range.
Обычно count редко используют с циклом for. Чаще можно встретить случаи с функциями типа zip или map.
#itertoolsos.fork() создаёт дочерний процесс в том же месте кода, вызывая системную функцию fork(), и возвращает PID (Process Identifier), который равен PID дочернего процесса в родительском процессе и нулю в новом.
Кстати, получается интересный случай, в коде примера выполняется и блок if, и else. Если не знать про os.fork() и посмотреть вывод подобного кода, то возникнет много вопросов.
#os #fork #процессы__lt__, __le__, __eq__, __ne__, __gt__, __ge__.
Про то, что делает каждый из них расскажем отдельным постом, но сейчас покажем, как можно сильно упростить реализацию подобного класса. Для этого можно использовать декоратор total_ordering из пакета functools.
В таком случае достаточно реализовать в классе только __lt__ и __eq__. Эти два метода являются минимумом, который нужен декоратору для конструирования остальных методов.
#классыsubgen, которая будет возвращать числа от 0 до переданного аргумента.
А также ещё одну генераторную функцию delegator, которая будет возвращать числа из итерируемого объекта source, который передадим в качестве аргумента.
Цикл, который можно написать в delegator, можно заменить всего лишь одной строчкой. То есть yield from заменяет цикл for, в котором только возвращаются значения через yield.
Грубо говоря, такая конструкция является неким туннелем передачи данных туда и обратно. В нашей ситуации delegator можно назвать делигирующим генератором, а subgen подгенератором.
#генераторыresult = pow(x, y, z)где: x — основание степени, y — показатель степени, z (необязательный параметр) — модуль, по которому производится вычисление. Если z указан, то pow(x, y, z) возвращает (x y) % z. Если z не указан, то возвращается x y. #python
__del__, который вызовется автоматически при удалении объекта.
Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.
#классыtype можно получить тип объекта. Но не все так просто, по сути type служит динамической заменой инструкции class и позволяет создавать новые объекты типа во время исполнения.
Первый принимаемый аргумент является именем класса и становится атрибутом __name__; второй аргумент является кортежем с перечисленными базовыми типами и становится атрибутом __base__; словарь будет являться телом класса и станет атрибутом __dict__.
#type #class