Каталог каналов Мои подборки Мои каналы Поиск постов Рекламные посты
Инструменты
Каталог TGAds Мониторинг Детальная статистика Анализ аудитории Бот аналитики
Полезная информация
Инструкция Telemetr Документация к API Чат Telemetr
Полезные сервисы

Не попадитесь на накрученные каналы! Узнайте, не накручивает ли канал просмотры или подписчиков Проверить канал на накрутку
Прикрепить Телеграм-аккаунт Прикрепить Телеграм-аккаунт

Телеграм канал «Постоянный репозиторий по Python»

Постоянный репозиторий по Python
341
0
1
0
383
Подписчики
Всего
1 850
Сегодня
+1
Просмотров на пост
Всего
208
ER
Общий
8.9%
Суточный
5.6%
Динамика публикаций
Telemetr - сервис глубокой аналитики
телеграм-каналов
Получите подробную информацию о каждом канале
Отберите самые эффективные каналы для
рекламных размещений, по приросту подписчиков,
ER, количеству просмотров на пост и другим метрикам
Анализируйте рекламные посты
и креативы
Узнайте какие посты лучше сработали,
а какие хуже, даже если их давно удалили
Оценивайте эффективность тематики и контента
Узнайте, какую тематику лучше не рекламировать
на канале, а какая зайдет на ура
Попробовать бесплатно
Показано 7 из 341 поста
Смотреть все посты
Пост от 25.05.2026 09:22
47
0
0
Почему range()– это не список (и почему это круто)

Многие думают, что: range(1_000_000) создаёт огромный список чисел в памяти.
Но на самом деле – нет 😎

Что такое range() на самом деле

range() – это специальный объект, который:
·      НЕ хранит все числа сразу
·      генерирует значения по мере необходимости
·      занимает очень мало памяти
 
Почему это важно

Сравним две конструкции:
 
numbers = list(range(1_000_000))
и
numbers = range(1_000_000)
Во втором случае память почти не расходуется.
Потому что Python не создаёт миллион объектов заранее.

Как это работает
range() хранит только:
·      начало
·      конец
·      шаг
А нужное число вычисляет «на лету». Поэтому можно спокойно писать:

for i in range(10_000_000):
    ...
 
и не бояться, что память мгновенно закончится.
 
Почему это пример хорошего дизайна Python
 
Python старается:
 
·      не делать лишнюю работу
·      не создавать лишние объекты
·      вычислять данные тогда, когда они реально нужны
 
Это называется ленивыми вычислениями (lazy evaluation).
 
Где это особенно важно
 
·      обработка больших данных
·      ETL-пайплайны
·      генерация последовательностей
·      работа с файлами
·      стриминг данных
 
Частая ошибка ❌
 
list(range(...))
 
Люди часто превращают range в список без необходимости.
А потом удивляются расходу памяти.
 
Когда список всё-таки нужен
Только если:
нужен случайный доступ с изменением
нужны методы списка
данные действительно должны храниться целиком
 
Главное правило
Если можно не создавать список — лучше его не создавать.
 
Вывод
range() – отличный пример того, как Python экономит память и делает код эффективнее без лишней магии.
1
🔥 1
😁 1
Пост от 19.05.2026 10:47
199
0
0
😁 3
2
🔥 1
Пост от 19.05.2026 10:47
192
0
0
Пост от 16.05.2026 10:40
202
0
0
Почему try/except – это не замена if
Очень частая ошибка начинающих:
value = input()
 
try:
    if int(value) > 10:
        print("OK")
except:
    print("Ошибка")
 
На первый взгляд всё нормально.
Но здесь есть серьёзная проблема.

В чём ошибка подхода?

except начинает ловить вообще всё подряд:
- ошибки преобразования
- ошибки логики
- опечатки
- ошибки в коде
- даже системные исключения

И в итоге реальные проблемы могут просто скрыться.

Как делают правильно
 
value = input()
 
if value.isdigit():
    number = int(value)
 
    if number > 10:
        print("OK")
else:
    print("Введите число")
 
Главное правило

👉 if — для ожидаемой логики
👉 try/except — для действительно исключительных ситуаций

Когда try/except нужен
Например:

try:
    with open("data.txt") as f:
        data = f.read()
except FileNotFoundError:
    print("Файл не найден")
 
Здесь ошибка действительно может произойти во внешней среде.
 
Самая опасная конструкция ❌
 
except:
 
Почему это плохо:
скрывает реальные ошибки
усложняет отладку
может ломать логику программы
 
Правильнее так ✔️
 
except ValueError:
 
То есть ловить конкретное исключение.
 
Почему это особенно важно в Data Science / ETL

Иногда pipeline «успешно работает»,
но половина ошибок просто тихо проглатывается через:
 
except:
    pass
 
А потом начинается магия:

- данные пропадают
- метрики ломаются
- результаты «странные»
 
Краткое правило

- ожидаемая ситуация → if
- неожиданная ошибка → try/except
- никогда не писать голый except
5
🔥 1
🥰 1
Пост от 12.05.2026 10:00
272
0
0
👍 2
🔥 1
😁 1
Пост от 12.05.2026 10:00
251
0
0
Пост от 05.05.2026 10:40
198
0
0
Почему list comprehension – это не просто «короче», а принципиально другой стиль мышления

Очень часто можно увидеть такой код:

result = []

for x in data:
if x > 0:
result.append(x * 2)

Работает. Всё понятно. Но это «императивный» стиль – шаг за шагом.

Как это выглядит в Python-стиле

result = [x * 2 for x in data if x > 0]

И вот здесь происходит важное изменение:
👉 мы описываем что хотим получить, а не как идти по шагам

В чём реальная разница?

Это не просто «короче»:
• код становится декларативным
• легче читать «слева направо»
• проще комбинировать операции
• меньше промежуточных состояний

Почему это важно в аналитике и data-инженерии

Когда работаешь с данными, часто есть цепочка:
• фильтрация
• преобразование
• агрегирование

И list comprehension позволяет описывать это компактно:

[x["price"] for x in orders if x["status"] == "paid"]

Но есть ловушка ⚠️
Когда логика становится сложной — код превращается в кашу:

[x * 2 if x > 0 else x - 2 for x in data if x % 2 == 0]

👉 Это уже трудно читать

Когда использовать
✔️ простые фильтры
✔️ простые преобразования
✔️ короткие цепочки логики

Когда НЕ стоит
❌ сложные условия
❌ вложенные конструкции
❌ длинные выражения

В таких случаях обычный for читается лучше.

Главное правило
list comprehension – это не «сокращение кода», это способ мыслить через преобразование коллекций.

Вывод
Хороший Python-код – это не самый короткий код, а самый понятный при первом чтении.
🤝 4
1
👍 1
🔥 1
Смотреть все посты