Python/ django
по всем вопросам @haarrp @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3FmxmM
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Python/ django
تُعد قناة Python/ django (@pythonl) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 60 091 مشتركاً، محتلاً المرتبة 2 192 في فئة التكنولوجيات والتطبيقات والمرتبة 10 214 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 60 091 مشتركاً.
بحسب آخر البيانات بتاريخ 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...”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 06 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
pip, poetry, uv, hatch, pdm и др. — это уже не просто "pip install", а стратегическое решение.
В этом гайде сравниваются 6 ключевых инструментов, каждый со своими сильными и слабыми сторонами:
1️⃣ uv — самый быстрый и универсальный (написан на Rust)
✅ До 100× быстрее pip
✅ Объединяет pip, virtualenv и pip-tools
✅ Поддержка PyPI-паблишинга и Python-менеджмента
📌 Выбор для CI/CD и monorepo-проектов
2️⃣ Poetry 2 — стандарт для библиотек и модульных приложений
✅ Поддержка semantic versioning, lock-файлов, плагинов
✅ Отлично подходит для open source
📌 Идеален для reproducible builds и PyPI
3️⃣ Hatch — “Cargo для Python”
✅ Поддержка матриц окружений, monorepo, хуков
✅ Интеграция с uv для скорости
📌 Выбор для сложных enterprise-проектов и тестовых фреймворков
4️⃣ PDM — стандартизированный менеджер без virtualenv
✅ Поддержка PEP 582 (__pypackages__), PEP 621
✅ Изоляция без виртуалок, удобен для прототипов
📌 Подходит для rapid dev и экспериментальных сборок
5️⃣ Pipenv — простой интерфейс для приложений
✅ Pipfile, auto-venv, чистый CLI
📌 Хорош для небольших проектов и начинающих
6️⃣ pip — классика
✅ Совместим везде, гибкий
❌ Нет lock-файлов, окружений, требует внешних тулов
📌 Решение для легаси-проектов или скриптов
💡 Выводы:
• uv — лучший выбор для скорости, CI и автоматизации
• Poetry — стандарт для библиотек, особенно с open source
• Hatch — для сложных проектов и продвинутых пайплайнов
• PDM — для быстрой разработки и современных стандартов
• Pipenv — простой, но морально устарел
• pip — базовый минимум, но требует ручной сборки обвязки
Если ты:
🔹 Собираешь ML‑пайплайн → смотри в сторону uv + Hatch
🔹 Работаешь над библиотекой → Poetry 2 будет логичным выбором
🔹 Строишь монорепу или сложный фреймворк → Hatch + workspace
🔹 Пишешь простые скрипты или MVP → подойдёт PDM или Pipenv
🔗 Полный гайд
@pythonlwith, но не писать громоздкий класс с __enter__ и __exit__? Используй @contextmanager из contextlib:
from contextlib import contextmanager
import time
@contextmanager
def timer(label="Block"):
start = time.time()
print(f"[{label}] Start")
try:
yield
finally:
end = time.time()
print(f"[{label}] End — elapsed: {end - start:.3f}s")
# Пример использования
with timer("Download step"):
time.sleep(1.2)
📌 До yield — код до with
📌 После yield — код после with
🔥 Это мощный способ:
- логировать действия,
- временно менять окружение (stdout, переменные, режимы),
- управлять ресурсами, не создавая классы.
@pythonl
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.FileHandler("app.log")
handler.setFormatter(logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s"))
logger.addHandler(handler)
def divide(a, b):
return a / b
def main():
logger.info("Start")
logger.info(divide(10, 0)) # ZeroDivisionError
logger.info("End")
if __name__ == "__main__":
main()
📄 В логе:
2025-07-24 12:00:00 __main__ INFO Start
❗ А сам ZeroDivisionError — только в консоли. Лог молчит.
✅ Решение — использовать sys.excepthook:
import sys
def handle_uncaught_exception(exc_type, exc_value, exc_traceback):
logger.critical("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_uncaught_exception
Теперь, если произойдёт ошибка, она попадёт в лог:
CRITICAL Uncaught exception Traceback (most recent call last): ... ZeroDivisionError: division by zero📌 Вывод: — Необработанные исключения не попадут в лог, если явно не подключить sys.excepthook — Это особенно важно в продакшене: лог покажет, где и почему всё сломалось — Просто и надёжно 🔗 Подробнее @pythonl
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.FileHandler("app.log")
handler.setFormatter(logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s"))
logger.addHandler(handler)
def divide(a, b):
return a / b
def main():
logger.info("Start")
logger.info(divide(10, 0)) # ZeroDivisionError
logger.info("End")
if __name__ == "__main__":
main()
📄 В логе:
2025-07-24 12:00:00 __main__ INFO Start
❗ А сам ZeroDivisionError — только в консоли. Лог молчит.
✅ Решение — использовать sys.excepthook:
import sys
def handle_uncaught_exception(exc_type, exc_value, exc_traceback):
logger.critical("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_uncaught_exception
Теперь, если произойдёт ошибка, она попадёт в лог:
CRITICAL Uncaught exception Traceback (most recent call last): ... ZeroDivisionError: division by zero📌 Вывод: — Необработанные исключения не попадут в лог, если явно не подключить sys.excepthook — Это особенно важно в продакшене: лог покажет, где и почему всё сломалось — Просто и надёжно 🔗 Подробнее @pythonl
pip install pynguin, минимальная конфигурация требует указания пути к проекту и модулям для тестирования.
🤖 GitHub
@pythonlsorted() с key, комбинируя несколько полей с нужной логикой сортировки. Вот как:
people = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 25},
{"name": "David", "age": 30},
]
# Сортировка: сначала по age (по возрастанию), затем по name (по убыванию)
sorted_people = sorted(people, key=lambda p: (p["age"], -ord(p["name"][0])))
for person in sorted_people:
print(person)
💡 Работает и с объектами, и с кортежами — главное, правильно составить key. Особенно полезно для фильтрации списков в табличных данных, при выводе результатов или генерации отчётов.
#python
Больше коротких уроков тут
# Создаем класс динамически
MyDynamicClass = type(
'MyDynamicClass', # имя класса
(object,), # родительские классы
{'x': 42, 'hello': lambda self: f'Hello, x = {self.x}'} # атрибуты и методы
)
obj = MyDynamicClass()
print(obj.hello()) # Hello, x = 42
🔥 Что тут происходит?
type() в обычном использовании возвращает тип объекта.
Но если передать три аргумента, он создаёт новый класс.
Мы задали имя, базовые классы и словарь атрибутов.
💡 Это то, что делает Python "Pythonic" — классы это тоже объекты, и ты можешь создавать их на лету.
@pythonlcudf.pandas.
Для примеры были взяты:
📉 Скользящие средние (50D и 200D)
📅 Недельная статистика закрытия рынков
🧊 В общей сложности ~18M строк
Результат впечатляет : удалось добиться**ускорения обработки данных в 20–40 раз
Код скрипта не менялся вообще — тот же pandas, но на GPU.
Это один из примеров, где ускорение достигается без переписывания логики кода.
🟡 Потестить самому можно в Colab
🟡 Другие примеры с кодом — здесь
@ai_machinelearning_big_data
#datasckience #ml #nvidia #gpu #pandas #python
def append_to_list(val, my_list=[]):
my_list.append(val)
return my_list
print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))
🤯 Подвох
Многие думают, что каждый вызов append_to_list() создаёт новый список, и ожидают вывод:
[1]
[2]
[3]
Но на самом деле Python выведет:
[1]
[1, 2]
[1, 2, 3]
🧠 Почему так происходит?
В Python значения аргументов по умолчанию вычисляются один раз — при определении функции, а не при каждом вызове.
Значение my_list=[] создаётся один раз и сохраняется между вызовами. Это работает как статическая переменная внутри функции.
✅ Как это исправить?
Используй None как значение по умолчанию:
def append_to_list(val, my_list=None):
if my_list is None:
my_list = []
my_list.append(val)
return my_list
print(append_to_list(1)) # [1]
print(append_to_list(2)) # [2]
print(append_to_list(3)) # [3]
💡 Вывод
Не используйте изменяемые объекты (например, list, dict, set) как значения по умолчанию для аргументов функций в Python.
@pythonlmoviepy
— Преобразование аудио в текст через SpeechRecognition
— Извлечение субтитров
— Автоматизация задач с файлами .mp3, .wav, .mp4 и .avi
🛠 Глава написана в привычном стиле — просто, на примерах, с пояснениями к коду. Идеально подойдёт для тех, кто хочет быстро научиться обрабатывать медиафайлы на Python без сложных фреймворков.
📎 Читать
@Pythonl
data = [1, 2, 3, ..., 1000000] # большой список
queries = [42, 9999, 123456]
# Медленно:
for q in queries:
if q in data:
print(q)
🔁 Каждый q in data проходит весь список → медленно.
✅ Правильный способ:
Преобразуй список в set один раз — и все станет быстро:
data_set = set(data)
for q in queries:
if q in data_set:
print(q)
💡 Проверка in в set работает мгновенно (как в словаре).
Такой трюк особенно полезен, если:
-у тебя много данных
-ты делаешь много проверок на вхождение
📌 Запомни: if x in список: — медленно
Лучше: if x in set(список): — быстро!
@pythonl
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
