Python Portal
Всё самое интересное из мира Python Сотрудничество, реклама: @devmangx Менеджер: @Spiral_Yuri РКН: https://clck.ru/3GMMF6
Показати більше📈 Аналітичний огляд Telegram-каналу Python Portal
Канал Python Portal (@pythonportal) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 50 880 підписників, посідаючи 2 538 місце в категорії Технології та додатки та 12 054 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 50 880 підписників.
За останніми даними від 31 серпня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -435, а за останні 24 години на -23, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 9.33%. Протягом перших 24 годин після публікації контент зазвичай збирає 4.71% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 4 751 переглядів. Протягом першої доби публікація в середньому набирає 2 396 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 19.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як строка, none, true, модуль, peter.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Всё самое интересное из мира Python
Сотрудничество, реклама: @devmangx
Менеджер: @Spiral_Yuri
РКН: https://clck.ru/3GMMF6”
Завдяки високій частоті оновлень (останні дані отримано 01 вересня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
deque.maxlen
Знаете ли вы, что можно задать максимальную длину списка, используя deque из модуля collections?
Класс deque (двусторонняя очередь) из модуля collections поддерживает параметр maxlen, который устанавливает максимальный размер очереди. Когда очередь достигает этого размера, добавление новых элементов автоматически удаляет элементы с противоположного конца, реализуя поведение "первым пришёл — первым ушёл" (FIFO) с ограничением по размеру.
В приведённом примере deque имеет максимальную длину 3. При добавлении значения 4 удаляется 1, что делает такую структуру идеальной для реализации скользящего окна последних трёх элементов 📖
👉 @PythonPortalrepo.new в адресной строке браузера — и сразу откроется страница создания нового репозитория на GitHub.
Такой простой способ сэкономить время 🤯
👉 @PythonPortalСтань олдом этого канала 🔥Вступить в CodeGuard - t.me/codeguard
pytest, чтобы добавлять метаданные к тестам.
Это упрощает организацию и запуск определённых групп тестов
В примере на изображении используются два пользовательских маркера:
🔹@pytest.mark.performance
– Применён к тесту для замера производительности test_page_load_time
🔹@pytest.mark.database
– Применён к тестам для работы с базой данных test_database_connection и test_data_integrity
Мы можем запускать выборочно, например тесты, помеченные маркером @pytest.mark.database
pytest -m database
👉 @PythonPortal__or__
Это позволяет связывать операции так, что вывод одной функции становится входом для следующей → чисто, читаемо и удобно для композиции
Именно так LangChain реализует элегантные пайплайны вроде: chat_prompt | groq_model | output_parser
Пример:
class Pipe:
def __init__(self, func):
self.func = func
def __call__(self, x):
return self.func(x)
def __or__(self, other):
return self.__class__(lambda x: other(self(x)))
🔸Pipe — обёртка над функцией
🔸__or__ (|) позволяет комбинировать пайпами, как в Unix
🔸__call__ делает объект вызываемым, как обычную функцию
Теперь можно обернуть любые функции в Pipe и комбинировать их в цепочку:
double = Pipe(lambda x: x * 2)
square = Pipe(lambda x: x ** 2)
pipeline = double | square
print(pipeline(3)) # (3 * 2) ** 2 = 36
👉 @PythonPortalpip install art
Пример использования:
from art import text2art
Art = text2art("art") # шрифт по умолчанию
print(Art)
# Пример вывода:
# _
# __ _ _ __ | |_
# / _` || '__|| __|
# | (_| || | | |_
# \__,_||_| \__|
Art_block = text2art("art", font='block', chr_ignore=True)
print(Art_block)
# Выведет крупный блок‑текст
Идеально для приветственных страничек или добавить декоративный вывод в CLI или логах 😊
👉 @PythonPortalelse:
🔸Условный оператор if-else
🔸Цикл for-else
🔸Цикл while-else
🔸Блок try-except-else
На фото мы видим 4 примера:
1. проверяет условие. Если x < 5 — выполняется if, иначе — else
2. Цикл ищет i == 10. Не находит, break не срабатывает → выполняется else
> Блок else выполняется только если цикл не прерван через break
3. Цикл отрабатывает до конца, else выполняется после завершения while
> else не выполнится, если внутри цикла будет break
4. Пытается выполнить 10 / 2. Исключения нет — срабатывает else
> else выполняется только если не было исключений в try
👉 @PythonPortalexisting = {t for tag in old_tags if (t := tag.strip())}
incoming = {t for tag in new_tags if (t := tag.strip())}
🔸tag.strip() удаляет пробелы с начала и конца строки.
🔸t := tag.strip() сохраняет очищенное значение в переменную t.
🔸if (t := tag.strip()) фильтрует пустые строки ("").
Удаление существующих тегов:
updated = existing - incoming
print("Removed tags:", updated)
Добавление новых тегов (без дубликатов):
updated = existing | incoming
print("Added tags:", updated)
👉 @PythonPortalpoetry show --tree --why [package], чтобы отследить, откуда берётся пакет.
Она быстро показывает:
> какие пакеты от него зависят
> почему пакет был установлен
На примере показано, как команда
poetry show --tree --why pydantic
помогает понять, почему библиотека pydantic присутствует в проекте и кто её тянет в зависимости.
Это очень полезно перед очисткой pyproject.toml или при разрешении конфликтов транзитивных зависимостей. 📝
👉 @PythonPortalsetdefault
Метод setdefault() позволяет заменить 4 строки традиционного кода, избавляя от необходимости использовать условие if и ручную инициализацию.
setdefault() чётко передаёт намерение: «Если ключ отсутствует, установить для него пустой список. Затем добавить элемент в список». Это одновременно делает код короче и понятнее
Есть ли причины использовать это вместо collections.defaultdict? 🤔Хороший вопрос. Думаю, основное различие в том, что с
setdefault можно указывать разное значение по умолчанию при каждом вызове, тогда как у defaultdict одно общее значение для всех отсутствующих ключей. Метод setdefault также удобен тем, что не требует импорта =)
👉 @PythonPortaluv add --script /path/to/script.py, чтобы добавить встроенные зависимости в Python-скрипт. Если заголовок скрипта ещё не существует, uv сгенерирует его автоматически
Команда uv run http://script.py выполнит скрипт со всеми необходимыми зависимостями.
Не нужно создавать виртуальное окружение, устанавливать пакеты и т.д. ☺️
👉 @PythonPortal