Python/ django
по всем вопросам @workakkk @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3FmxmM
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Python/ django
تُعد قناة Python/ django (@pythonl) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 58 512 مشتركاً، محتلاً المرتبة 2 246 في فئة التكنولوجيات والتطبيقات والمرتبة 10 308 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 58 512 مشتركاً.
بحسب آخر البيانات بتاريخ 29 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -174، وفي آخر 24 ساعة بمقدار -25، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.05%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 3.03% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 3 541 مشاهدة. وخلال اليوم الأول يجمع عادةً 1 771 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 21.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل github, claude, контекст, архитектура, api.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“по всем вопросам @workakkk
@itchannels_telegram - 🔥 все ит каналы
@ai_machinelearning_big_data -ML
@ArtificialIntelligencedl -AI
@datascienceiot - 📚
@pythonlbooks
РКН: clck.ru/3Fm...”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 30 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
lines = Path('file.txt').read_text().splitlines()
2. 🔐 Получить SHA256-хеш строки
hash = hashlib.sha256(b"your text").hexdigest()
3. 🧮 Конвертация списка чисел в строку
s = ','.join(map(str, numbers))
4. 🛑 Быстро остановить выполнение скрипта
raise SystemExit("Done")
5. 🧠 Распечатать размер объекта в памяти
print(sys.getsizeof(obj))
6. 🧬 Плоское разворачивание вложенных списков
flat = [i for sub in nested for i in sub]
7. 🔄 Инвертировать булеву маску NumPy
inv_mask = ~mask
8. 🧽 Удалить дубликаты из списка, сохранив порядок
seen = set(); uniq = [x for x in lst if not (x in seen or seen.add(x))]
9. 📦 Распаковка аргументов из словаря в функцию
result = func(**params)
10. 🔎 Получить словарь с топ-N частыми значениями
top_n = dict(Counter(lst).most_common(5))
11. 🪓 Ограничить длину строки с троеточием
s_trunc = s[:n] + '…' if len(s) > n else s
12. 🎛️ Массив из 0 и 1 случайной длины
binary = [random.randint(0, 1) for _ in range(n)]
13. 🗓️ Получить сегодняшнюю дату в формате ISO
today = date.today().isoformat()
14. 📁 Получить размер файла в мегабайтах
size_mb = os.path.getsize(path) / 1024**2
15. 🔀 Перемешать словарь (Python 3.7+ сохраняет порядок)
shuffled = dict(random.sample(d.items(), len(d)))
16. ⏳ Измерить время выполнения блока
with contextlib.redirect_stdout(io.StringIO()): exec('code')
17. 🧱 Разделить список на чанки по N
chunks = [lst[i:i+n] for i in range(0, len(lst), n)]
18. 🕵️ Проверить, работает ли хост (без ping)
ok = socket.create_connection((host, port), timeout=2)
19. 🛠️ Быстро заменить подстроку без re
s = s.replace('from', 'to', 1)
20. 🧪 Убедиться, что все элементы списка — числа
is_all_numbers = all(isinstance(x, (int, float)) for x in lst)
📌 Если нужна часть 3 — ставь лайк.
@pythonlsys.modules.
Вот минимальный приём, который делает это прозрачно:
import sys
import types
# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"
# Подменяем импорт
sys.modules['external_service'] = fake
# Теперь даже import будет работать
import external_service
print(external_service.get_data()) # → "подмена работает"
@pythonlfrom array import array
data = array('f', [0.1] * 10_000_000) # вместо обычного list
# быстрая арифметика
for i in range(len(data)):
data[i] *= 2.5
@python_job_interview[::-1] и lambda x: x*2. Вот подборка, где однострочники реально ускоряют работу, убирают лишний код и улучают читаемость кода:
1. 📁 Получить все файлы с расширением .py рекурсивно
files = list(Path('.').rglob('*.py'))
2. 🧪 Быстрое тестирование скорости любого выражения
timeit(lambda: your_func(), number=1000)
3. 🔎 Показать все публичные методы объекта
[m for m in dir(obj) if not m.startswith('_')]
4. 🧼 Очистить DataFrame от строк с NaN
df_clean = df.dropna()
5. 🔄 Быстрое многопоточное выполнение функций
list(ThreadPoolExecutor().map(func, iterable))
6. 🗜️ Получить частоты значений в списке
dict(Counter(my_list))
7. 🔍 Найти дубликаты в списке
dups = [x for x, c in Counter(lst).items() if c > 1]
8. 📦 Сжать список без None
filtered = list(filter(None, data))
9. 🕵️♂️ Ловить и логировать все исключения в одном выражении
try: foo() except Exception as e: logging.exception(e)
10. 📊 Преобразовать список словарей в DataFrame
pd.DataFrame(list_of_dicts)
11. 🔄 Инвертировать словарь с проверкой на коллизии
inv = {v: k for k, v in d.items() if list(d.values()).count(v) == 1}
12. ⏳ Простой таймер
start = time(); result = fn(); print(f'{time() - start:.2f}s')
13. 🔢 Перемешать и взять подмножество
sample = random.sample(big_list, k=100)
14. 🧠 Получить максимальный элемент по ключу
max(data, key=lambda x: x.score)
15. 📐 Убрать отступ у многострочной строки
dedented = textwrap.dedent(multiline_string)
16. 🛠️ Простой retry без библиотек
[func() for _ in range(5) if not success()][-1]
17. 📚 Преобразовать JSON-файл в объект
data = json.loads(Path('file.json').read_text())
18. 🧮 Быстрая нормализация NumPy-вектора
v /= np.linalg.norm(v)
19. 🧾 Отобразить все переменные окружения, отсортированные по имени
print('\n'.join(f'{k}={v}' for k, v in sorted(os.environ.items())))
20. 🔄 Преобразовать словарь в query string
query = urlencode(params)
@pythonl.__dict__, без сериализации, без ручного разбора.
Вот приём, который делает это рекурсивно, красиво и гибко — с помощью dataclasses и asdict, даже если объект не был dataclass изначально.
python
from dataclasses import dataclass, asdict, is_dataclass
from types import SimpleNamespace
def deep_to_dict(obj):
if isinstance(obj, dict):
return {k: deep_to_dict(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [deep_to_dict(i) for i in obj]
elif is_dataclass(obj):
return asdict(obj)
elif isinstance(obj, SimpleNamespace):
return deep_to_dict(vars(obj))
elif hasattr(obj, '__dict__'):
return deep_to_dict(vars(obj))
else:
return obj
🧠 Рекурсивный разбор любых Python-объектов
📌 Подходит для логирования, сериализации, отладки
📌 Работает с dataclass, обычными классами, объектами из types, JSON-like структурами
📌 Можно расширить: добавить фильтрацию полей, вывод в YAML или сохранение в файл
Теперь любой “монстр из API” — превращается в читаемый словарь за одну строчку.git clone https://github.com/persts/DotDotGoose
python3 -m venv ddg-env
source ddg-env/bin/activate
python -m pip install --upgrade pip
python -m pip install -r ./DotDotGoose/requirements.txt
👨🔬 Для всех, кому нужен точный ручной подсчёт на изображениях.
🔗 GitHub:
@pythonltorch, tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib.
Вот как это выглядит на практике:
import importlib
# Обёртка для ленивого импорта
def lazy_import(name):
return importlib.util.LazyLoader(importlib.import_module(name))
# Использование
np = lazy_import('numpy')
# numpy ещё не загружен
# Теперь загрузится:
print(np.array([1, 2, 3]))
@pythonl.py`-файл, добавить одну строчку и превратить его в бинарный .so`‑модуль через Cython — без изменения логики.
# 1. Устанавливаем Cython и компилятор
pip install cython
sudo apt install build-essential
# 2. Переименовываем файл
mv myscript.py myscript.pyx
# 3. Создаём setup.py
echo '
from setuptools import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("myscript.pyx"))
' > setup.py
# 4. Компилируем
python3 setup.py build_ext --inplace
# 5. Используем как обычный модуль
python3 -c 'import myscript; myscript.main()'
@pythonl
pip install gremllm
🔧 Пример:
from gremllm import Gremllm
counter = Gremllm('counter')
counter.value = 5
counter.increment()
print(counter.value) # → 6?
print(counter.to_roman_numerals()) # → VI?
🧩 Возможности:
– Динамическое поведение: всё определяется "на лету" с помощью LLM
– Поддержка OpenAI, Claude, Gemini, и локальных моделей
– Wet Mode: можно строить цепочки вызовов (методы возвращают объекты)
– Verbose Mode: выводит, какой код был сгенерирован
– Умная обработка ошибок и настройка через наследование
⚠️ Это экспериментальный инструмент. Не для продакшена. Но очень интересен для изучения LLM-интеграций в Python-код.
🔗 Репозиторий: https://github.com/ur-whitelab/gremllm
@pythonl
git clone https://github.com/run-llama/notebookllama
▪GitHub: https://github.com/run-llama/notebookllama
▪Попробовать в LlamaCloud: https://cloud.llamaindex.ai
@ai_machinelearning_big_data
#AI #ML #LLM #opensource #NotebookLM
git clone https://github.com/aliasrobotics/cai.git
cd cai
# отредактируйте config.yaml и запустите агента
📌 Github
@pythonl
class Sneaky:
def __eq__(self, other):
print("Comparing!")
return True
a = Sneaky()
b = [a]
print(a in b)
print(a == b[0])
print(b.count(a))
🤔 Подумай: сколько раз вызовется eq?
🎯 Разбор:
print(a in b)
🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==.
👉 Вызовется eq, будет True.
print(a == b[0])
🔍 Прямое сравнение — снова eq.
print(b.count(a))
🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a.
👉 Опять вызывается eq.
💥 Вывод будет:
Comparing!
True
Comparing!
True
Comparing!
1
📌 Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!".
🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён.
⚠️ Фишка для интервью:
Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии.
@pythonl