Python Academy
Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Больше📈 Аналитический обзор Telegram-канала Python Academy
Канал Python Academy (@python_academy) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 44 529 подписчиков, занимая 2 929 место в категории Технологии и приложения и 14 041 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 44 529 подписчиков.
Согласно последним данным от 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) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
combinations: она позволяет составлять комбинации элементов из итерируемых объектов без повторений. Первый аргумент это сам объект, а второй — длина комбинации.
Для того, чтобы составить комбинацию с повторениями, используют функцию combinations_with_replacement. Делает она абсолютно все то же самое что и предыдущая, с одним исключением – теперь в комбинации могут быть повторы.
Ну и в заключение, рассмотрим функцию compress, применяющую "маску" из второго аргумента функции к первому. То есть, если в маске на этом месте стоит единица, то в исходном массиве элемент остается нетронутым, и наоборот.
#itertoolsyield. При таком написании создаётся не генератор, а корутина, что позволяет не просто генерировать значения, но и принимать их.
Функция работает так: при отправке значения через метод send локальная переменная name принимает его, а далее значение подставляется в строку и выводится на экран.
#генераторы #корутиныPython модуль typing предоставляет возможность добавлять подсказки типов для переменных, функций и классов, что делает код более явным и понятным.
Зачем использовать типизацию?
1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций.
2. Предотвращение ошибок: Статические анализаторы кода, такие как mypy, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов.
3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.
Пример использования типизации для переменных и функций:
from typing import List, Tuple
def multiply(a: int, b: int) -> int:
return a * b
def process_list(data: List[int]) -> Tuple[int, int]:
sum_values = sum(data)
average = sum_values / len(data)
return sum_values, average
# Пример использования
result1 = multiply(5, 3)# Ожидается int
data_list = [1, 2, 3, 4, 5]
result2 = process_list(data_list)# Ожидается Tuple[int, int]
Здесь a: int и b: int указывают на типы аргументов функции, а -> int и -> Tuple[int, int] - на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных.
Типизация делает ваш код более структурированным, улучшает его читабельность и может служить документацией, облегчая разработку.
#python #typingnumpy массив.
Далее метод plt.plot(data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями.
Метод plt.show() откроет графическое окно с изображенным графиком.
Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут.
#matplotlibattime будет выполняться каджую минуту с 6 утра до 10 вечера в рабочие дни недели. Подробнее о написании своих расписаний можно почитать тут.
#aiocron@classmethod, а сейчас рассмотрим @staticmethod.
@staticmethod можно воспринимать как метод, который "не знает, к какому классу относится". Он просто получает переданные аргументы, без неявного первого аргумента, и его определение не изменяется через наследование. Еще раз: статические методы прикреплены к классу лишь для удобства — и не могут менять состояние ни класса, ни его экземпляра.
Зачем использовать. Статические методы делают код более читабельным и повторно используемым. Его также удобнее использовать для импорта по сравнению с обычными функциями, поскольку функцию не нужно отдельно импортировать.
В чем же разница?
@classmethod используется в суперклассе для определения того, как метод должен вести себя, когда он вызывается разными дочерними классами.
@staticmethod используется, когда мы хотим вернуть объект, независимо от вызываемого дочернего класса.append, для извлечения – pop.
Программный вид стека применяется для обхода структур по типу графов и деревьев. При реализации рекурсивных функций также будет применяться стек, но в таком случае уже его аппаратный вид.
#списки #стек__get__, __set__ или __delete__. После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.
У данного объекта будет переопределено поведение при доступе к атрибуту (__get__), при присваивании значений (__set__) или при удалении (__delete__).
#классы #дескрипторыdatetime, time, calendar, dateutil, pytz и другие;
— В них слишком много типов: date, time, datetime, tzinfo, timedelta, relativedelta и т. д.
И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип Arrow.
Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал datetime в Arrow и обратно.
Еще из приятных бонусов: там есть функция humanize, которая конвертирует время в читаемый текст.
#время #arrowhashlib, реализующий общий интерфейс для ряда популярных хэш функций и также может использовать функции доступные в системе, предоставляемые с установленным OpenSSL.
Использование очень простое, в модуле существует ряд конструкторов, соответствующих названиям хэш-функций. В конструктор мы можем передать байт-строку, хэш которой мы хотим получить, на выходе мы получим объект хэша. Объект хэша мы можем обновить методом update, сконкатенировав тем самым строки, а также можем можем вывести полученное значение с помощью методов digest и hexdigest. Первый возвращает байт-строку, второй - в шестнадцатеричном формате.
#hash #hashlibhashlib предоставляет алгоритмы хеширования, которые позволяют создавать уникальные хеш-суммы для данных. Это полезно для проверки целостности файлов, хранения паролей в безопасной форме и других задач безопасности данных.
Пример кода:
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 #hashlibnonlocal позволяет обращаться к переменным из нелокальной области видимости.
Поведение nonlocal заключается в том, что интерпретатор ищет переменную в ближайшей области видимости.
Основное различие с global в том, что с помощью nonlocal нельзя получить переменные из глобальной области видимости.
#переменные #nonlocaldict имеет удобный метод fromkeys, который был создан специально для таких случаев.
#словари #fromkeysargparse.
Для начала нам нужно создать объект парсера ArgumentParser, в который мы уже сможем добавить аргументы с нужными параметрами с помощью метода add_argument.
Первым параметром add_argument принимает либо имя обязательного позиционного аргумента, либо список опционального аргумента (опциональный аргумент идентифицируется через -). Также у add_argument есть множество необязательных опциональных параметров для работы с передаваемым значением аргумента, о них можете почитать в данной статье.
После добавления всех аргументов, нам нужно их спарсить с помощью метода parse_args, на выходе мы получим объект со всеми содержащимися аргументами.
#argparserandom больше среднего.
betavariate() — используется для получения случайного числа с плавающей запятой от 0 до 1 на основе бета-распределения (применяется для статистических расчетов).
gauss() — генерирует случайное число с плавающей запятой на основе распределения Гаусса (используется в теории вероятности).
paretovariate() — возвращает случайное число с плавающей запятой на основе распределения Парето (используется в теории вероятности).
Кстати, можете посмотреть на графиках результаты вызова этих функций по 100к раз тут, тут и тут.
#randomtextwrap.fill() — принимает текст и возвращает отформатированный текст, первая строка сохраняет свой отступ, а пробелы в начале каждой последующей строки вставляются в абзац.
textwrap.dedent() — используется для удаления общего префикса пробела из всех строк в тексте.
textwrap.indent() — используется для добавления текст префикса ко всем строкам в параграфе
#python #textwrapthreading для создания параллельных потоков выполнения и улучшения производительности ваших приложений.
threading позволяет создавать легковесные потоки, которые выполняются параллельно, ускоряя выполнение задач. Это особенно полезно в сценариях, где есть задачи, которые можно выполнить независимо друг от друга.
Пример:
import threading
import time
# Функция, которую будем выполнять в параллельных потоках
def print_numbers():
for i in range(5):
time.sleep(1) # Эмулируем длительную операцию
print(f"Thread {threading.current_thread().name}: {i}")
# Создаем два потока
thread1 = threading.Thread(target=print_numbers, name="Thread 1")
thread2 = threading.Thread(target=print_numbers, name="Thread 2")
# Запускаем потоки
thread1.start()
thread2.start()
# Ожидаем завершения потоков перед завершением программы
thread1.join()
thread2.join()
print("Главный поток выполнения завершен.")
В данном примере создаются два потока, каждый из которых выполняет функцию print_numbers, эмулируя длительную операцию с использованием time.sleep. Запуск потоков осуществляется с помощью метода start(), и главный поток ожидает их завершения с использованием метода join().
Модуль threading предоставляет удобные средства для работы с параллельными потоками в Python, что позволяет улучшить производительность приложений. Однако, следует быть внимательными при работе с потоками из-за потенциальных проблем с блокировками и синхронизацией данных. Попробуйте интегрировать threading в свой код и ускорьте выполнение задач! 💻
#python #threading