Python/ django
по всем вопросам @haarrp @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3FmxmM
Больше📈 Аналитический обзор Telegram-канала Python/ django
Канал Python/ django (@pythonl) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 60 075 подписчиков, занимая 2 192 место в категории Технологии и приложения и 10 214 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 60 075 подписчиков.
Согласно последним данным от 05 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -562, а за последние 24 часа — -8, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 6.76%. В первые 24 часа после публикации контент обычно набирает 3.58% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 4 065 просмотров. В течение первых суток публикация набирает 2 153 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 15.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как github, claude, контекст, архитектура, api.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“по всем вопросам @haarrp
@itchannels_telegram - 🔥 все ит каналы
@ai_machinelearning_big_data -ML
@ArtificialIntelligencedl -AI
@datascienceiot - 📚
@pythonlbooks
РКН: clck.ru/3Fmxm...”
Благодаря высокой частоте обновлений (последние данные получены 07 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
import textwrap
text = textwrap.dedent(\"\"\"
Привет!
Это текст с отступами.
\"\"\").strip()
print(text)
2. difflib.get_close_matches() — находит похожие строки.
import difflib
words = ["python", "java", "javascript"]
print(difflib.get_close_matches("javascrip", words))
3. uuid.uuid4() — генерирует уникальный ID.
import uuid
print(uuid.uuid4())
4. shutil.get_terminal_size() — узнаёт размеры терминала.
import shutil
columns, rows = shutil.get_terminal_size()
print(f"Размер терминала: {columns}x{rows}")
5. functools.lru_cache() — кэширует результаты функции.
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) fib(n-2)
print(fib(100))
6. itertools.groupby() — группирует элементы по ключу.
from itertools import groupby
data = [('fruit', 'apple'), ('fruit', 'banana'), ('veg', 'carrot')]
for key, group in groupby(data, lambda x: x[0]):
print(key, list(group))
7. contextlib.suppress() — элегантная альтернатива try-except.
from contextlib import suppress
with suppress(FileNotFoundError):
open("not_exist.txt")
@pythonl
import tariff
tariff.set({
"numpy": 50, # 50% тариф на numpy
"pandas": 200, # 200% тариф на pandas
"requests": 150 # 150% тариф на requests
})
▪ Замедление импорта: при импорте указанных пакетов время загрузки увеличивается пропорционально установленному тарифу.
Вывод сообщений: при каждом "обложенном тарифом" импорте выводится сообщение в стиле политической риторики, например:
JUST IMPOSED a 50% TARIFF on numpy! Original import took 45000 us, now takes 67500 us. American packages are WINNING AGAIN! #MIPA
Библиотека использует monkey-patching для перехвата и модификации процесса импорта.
▪Github
@ai_machinelearning_big_data
#fun #pythonmy_generator_function является генератором, потому что она использует ключевое слово yield.
В отличие от обычной функции, которая выполняет весь код и возвращает одно значение через return, генератор "приостанавливается" на каждом yield, возвращая указанное значение.
При следующем вызове он возобновляет работу с того места, где остановился.
Как работает yield:
Когда вы вызываете gen = my_generator_function(), код внутри функции не выполняется.
Создается специальный объект-генератор (gen).
Первый вызов next(gen) заставляет функцию выполниться до первого yield 1. Функция возвращает 1 и приостанавливается.
Второй вызов next(gen) возобновляет выполнение с точки после yield 1 и доходит до yield 2. Функция возвращает 2 и снова приостанавливается.
Именно поэтому print(next(gen), next(gen)) выводит 1 2.
Как работает return в генераторе:
Когда поток выполнения внутри генератора доходит до оператора return (в нашем случае return 73) или просто до конца функции без явного return, генератор считается завершенным.
Важно: Значение, указанное в return (здесь 73), не возвращается как обычное значение через yield. Вместо этого генератор выбрасывает (raises) специальное исключение: StopIteration.
Этот механизм StopIteration - стандартный способ в Python сигнализировать, что итератор (а генератор - это тип итератора) исчерпан.
Перехват StopIteration и получение значения:
В правой части кода мы пытаемся вызвать next(gen) еще раз.
Генератор возобновляется после yield 2, доходит до return 73 и выбрасывает StopIteration.
Конструкция try...except StopIteration as err: перехватывает это исключение.
Ключевой момент (показан стрелкой на картинке): Значение, которое было указано в операторе return генератора (73), становится доступным как атрибут .value пойманного исключения StopIteration.
Поэтому print(err.value) выводит # 73.
Итог:
Teturn в генераторе не производит очередное значение, а завершает его работу. При этом значение из return "упаковывается" в исключение StopIteration, сигнализирующее об окончании, и его можно извлечь из атрибута .value этого исключения, если перехватить его вручную.
Стандартный цикл for item in generator(): в Python автоматически обрабатывает StopIteration (просто завершает цикл) и не дает прямого доступа к err.value. Поэтому для демонстрации этого механизма и получения возвращаемого значения используется явный вызов next() внутри блока try...except.
@pythonlimport string
s = "Hello, world!"
print(s.translate(str.maketrans("", "", string.punctuation)))
# Hello world
Строковый метод translate ожидает «таблицу перевода», которую мы создаем с помощью вспомогательного метода класса maketrans.
Третий аргумент (string.punctuation в примере) — это строка символов, которые мы хотим удалить.
Значение string.punctuation (на которое указывает стрелка):
!'#$%&\'()*+,-./:;<=>?@[\\]^_{|}~`
Суть шпаргалки: Она показывает, как эффективно удалить все стандартные знаки препинания из строки в Python, используя комбинацию методов str.maketrans для создания "инструкции" по удалению и str.translate для применения этой инструкции к строке.
@pythonlcuPyNumeric — аналог NumPy, который переносит вычисления с CPU на GPU буквально заменой импорта.
🟢Во-вторых, CUDA Core переосмыслен для Python: здесь сделан упор на JIT-компиляцию и минимизацию зависимостей.
🟢В-третьих, добавлены инструменты для профилирования и анализа кода, а ускоренные C++-библиотеки теперь доступны из Python без потерь в производительности.
Но главное — новый подход к параллельным вычислениям. Вместо ручного управления потоками, как в C++, NVIDIA предлагает модель CuTile, которая оперирует массивами, а не отдельными элементами. Это упрощает отладку и делает код читаемым, не жертвуя скоростью. По сути, разработчики получают высокоуровневую абстракцию, скрывающую сложности железа, но сохраняющую гибкость.
Пока CuTile доступен только для Python, но в планах — расширение для C++. Это часть стратегии NVIDIA по поддержке новых языков: Rust и Julia уже на походе.
Python-сообщество уже может экспериментировать — например, интегрировать CUDA-ядра в PyTorch или вызывать привычные библиотеки. Теперь даже те, кто никогда не писал на C++, смогут использовать всю мощь GPU — осталось проверить, как это скажется на скорости создания прекрасных LLM светлого будущего.
🔜 Посмотреть полную презентацию на GTC 2025
@ai_machinelearning_big_data
#AI #ML #Python #CUDA #NVIDIAdef outer():
x = 5
def inner():
nonlocal x
x += 1
return x
return inner
f = outer()
print(f())
print(f())
print(f())
Варианты ответа:
A)
6 7 8B)
5 5 5C)
6 6 6D)
Ошибка выполнения--- ✅ Правильный ответ: A Почему: Функция
outer создаёт замыкание. Переменная x сохраняется между вызовами f, потому что inner — замыкает x и изменяет её с помощью nonlocal. Это классический пример использования замыканий в Python.
def make_funcs():
funcs = []
for i in range(3):
def wrapper(x=i):
return lambda: x
funcs.append(wrapper())
return funcs
a, b, c = make_funcs()
print(a(), b(), c())
❓ Варианты ответа:
A)0 1 2
В) 2 2 2
C)0 0 0
D)Ошибка на этапе выполнения
✅ Ответ: 0 1 2
📘 Объяснение:
🔹 Цикл for i in range(3) проходит по значениям 0, 1, 2.
🔹 В каждой итерации вызывается wrapper(x=i) — это копирует текущее значение i в локальную переменную x.
🔹 Затем возвращается lambda: x, которая запоминает это конкретное значение x.
🔹 В итоге:
a() → 0
b() → 1
c() → 2
Если бы мы не использовали x=i по умолчанию, а писали просто lambda: i, все функции замкнули бы одну и ту же переменную i, и на момент вызова она бы уже была равна 3.
@pythonl[tool.dpy] в pyproject.toml, укажи entrypoint — и собирай образы одной командой. Без Dockerfile, без боли.
🔧 Поддерживает:
✅ PEP-621
✅ uv и poetry
✅ кастомные переменные, порты и зависимости
✅ CI/CD (в т.ч. GitHub Actions)
🔥 Подходит для быстрой упаковки ML-сервисов, REST API, CLI-инструментов и всего, что крутится на Python.
Github
#python #docker #poetry #uv #devtools #opensource #cli
@pythonl[tool.dpy] в pyproject.toml, укажи entrypoint — и собирай образы одной командой. Без Dockerfile, без боли.
🔧 Поддерживает:
✅ PEP-621
✅ uv и poetry
✅ кастомные переменные, порты и зависимости
✅ CI/CD (в т.ч. GitHub Actions)
🔥 Подходит для быстрой упаковки ML-сервисов, REST API, CLI-инструментов и всего, что крутится на Python.
Github
#python #docker #poetry #uv #devtools #opensource #cli
@pythonl
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
