Совет по чистому коду на Python:
Проверяйте качество кода внутри CI-пайплайна с помощью этих библиотек:
• flake8 — контроль соблюдения стиля (PEP8)
• black — автоформатирование кода
• isort — сортировка и оптимизация импортов
• bandit — анализ кода на уязвимости безопасности
• safety — проверка зависимостей на известные уязвимости
👉 @PythonPortal
Проверяйте качество кода внутри CI-пайплайна с помощью этих библиотек:
• flake8 — контроль соблюдения стиля (PEP8)
• black — автоформатирование кода
• isort — сортировка и оптимизация импортов
• bandit — анализ кода на уязвимости безопасности
• safety — проверка зависимостей на известные уязвимости
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥10❤6🤝1
ТОП‑7 расширений для прокачки VSCode, Cursor и Windsurf: 📝
① Console Ninja
Показывает вывод консоли прямо в редакторе
② Error Lens
Выводит ошибки линтера и компиляции прямо в строке кода
③ Image Preview
Показывает превью изображений при наведении курсора
④ REST Client
Позволяет делать HTTP‑запросы и получать ответы прямо в редакторе
⑤ Version Lens
Управление версиями и обновление зависимостей из
⑥ Highlight on Copy
Мерцающая подсветка скопированного текста - видно, что именно ты скопировал
⑦ Symbols
Лучшая подборка иконок для типов файлов - делает интерфейс визуально чище
👉 @PythonPortal
① Console Ninja
Показывает вывод консоли прямо в редакторе
② Error Lens
Выводит ошибки линтера и компиляции прямо в строке кода
③ Image Preview
Показывает превью изображений при наведении курсора
④ REST Client
Позволяет делать HTTP‑запросы и получать ответы прямо в редакторе
⑤ Version Lens
Управление версиями и обновление зависимостей из
package.json
и не только⑥ Highlight on Copy
Мерцающая подсветка скопированного текста - видно, что именно ты скопировал
⑦ Symbols
Лучшая подборка иконок для типов файлов - делает интерфейс визуально чище
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍6🏆2💊2
Python Portal
uv – это потрясающе! 😮 Вы можете запускать Python-скрипты без необходимости беспокоиться о виртуальном окружении, установке зависимостей или версиях Python! Вот всё, что нужно: 🟢 Укажите зависимости в начале файла 🟢 Запустите команду: uv run your_script.py…
Вы можете выполнить
Команда
Не нужно создавать виртуальное окружение, устанавливать пакеты и т.д.☺️
👉 @PythonPortal
uv add --script /path/to/script.py
, чтобы добавить встроенные зависимости в Python-скрипт. Если заголовок скрипта ещё не существует, uv сгенерирует его автоматически Команда
uv run http://script.py
выполнит скрипт со всеми необходимыми зависимостями.Не нужно создавать виртуальное окружение, устанавливать пакеты и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤12🔥3🤔1
Совет по Python:
Использование
Метод
Хороший вопрос. Думаю, основное различие в том, что с
👉 @PythonPortal
Использование
setdefault
Метод
setdefault()
позволяет заменить 4 строки традиционного кода, избавляя от необходимости использовать условие if и ручную инициализацию.setdefault()
чётко передаёт намерение: «Если ключ отсутствует, установить для него пустой список. Затем добавить элемент в список». Это одновременно делает код короче и понятнее Есть ли причины использовать это вместо collections.defaultdict?🤔
Хороший вопрос. Думаю, основное различие в том, что с
setdefault
можно указывать разное значение по умолчанию при каждом вызове, тогда как у defaultdict
одно общее значение для всех отсутствующих ключей. Метод setdefault
также удобен тем, что не требует импорта =)Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥9❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Этот репозиторий на GitHub настоящая находка для каждого дата-сайентиста
DS Interactive Python — это репозиторий с интерактивными дашбордами для изучения статистики, моделей машинного обучения и других концепций Data Science.
Темы включают: PCA, бэггинг и бустинг, кластеризацию, нейронные сети и др.
Полностью open-source и бесплатен😮
👉 @PythonPortal
DS Interactive Python — это репозиторий с интерактивными дашбордами для изучения статистики, моделей машинного обучения и других концепций Data Science.
Темы включают: PCA, бэггинг и бустинг, кластеризацию, нейронные сети и др.
Полностью open-source и бесплатен
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21👍8🔥5🏆1
Совет по Python:
Используйте команду
Она быстро показывает:
> какие пакеты от него зависят
> почему пакет был установлен
На примере показано, как команда
помогает понять, почему библиотека pydantic присутствует в проекте и кто её тянет в зависимости.
Это очень полезно перед очисткой📝
👉 @PythonPortal
Используйте команду
poetry show --tree --why [package]
, чтобы отследить, откуда берётся пакет.Она быстро показывает:
> какие пакеты от него зависят
> почему пакет был установлен
На примере показано, как команда
poetry show --tree --why pydantic
помогает понять, почему библиотека pydantic присутствует в проекте и кто её тянет в зависимости.
Это очень полезно перед очисткой
pyproject.toml
или при разрешении конфликтов транзитивных зависимостей. Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤9🔥4
Основатель школы автотестировщиков QA.GURU проводит бесплатный интенсив «Из баг-репортов до первого автотеста на Python»
🔜 Во вторник, 24 июня, в 12:00 по МСК. Бесплатно.
Вы начинающий автоматизатор или ручной тестировщик? Займите место сейчас▶
За несколько часов опытный инженер объяснит, как написать и запустить автотест🤓
Что сделаете за занятие:
— Напишете свой автотест на Python с нуля.
— Настроите рабочую среду за 10 минут (и она реально будет работать).
— Разберётесь, когда использовать Selenium, Playwright или Selene.
— Запустите автотест с Pytest и без него.
И совсем немного о трендах QA:
— Зачем компаниям QA, которые умеют писать код.
— Python + автотесты как минимальный входной билет в индустрию.
— Нейросети: конкурент или ассистент?
Станислав Васенков, основатель школы — в прошлом — Head of QAA pflb.ru, автор allure-notifications, победитель хакатона от EPAM, спикер Heisenbug.
Занять место▶
Реклама. Рекламодатель: ИП Васенков Станислав Олегович, ИНН 774335827403, erid: 2Vtzqw51r9U
Вы начинающий автоматизатор или ручной тестировщик? Займите место сейчас
За несколько часов опытный инженер объяснит, как написать и запустить автотест
Что сделаете за занятие:
— Напишете свой автотест на Python с нуля.
— Настроите рабочую среду за 10 минут (и она реально будет работать).
— Разберётесь, когда использовать Selenium, Playwright или Selene.
— Запустите автотест с Pytest и без него.
И совсем немного о трендах QA:
— Зачем компаниям QA, которые умеют писать код.
— Python + автотесты как минимальный входной билет в индустрию.
— Нейросети: конкурент или ассистент?
Станислав Васенков, основатель школы — в прошлом — Head of QAA pflb.ru, автор allure-notifications, победитель хакатона от EPAM, спикер Heisenbug.
Занять место
Реклама. Рекламодатель: ИП Васенков Станислав Олегович, ИНН 774335827403, erid: 2Vtzqw51r9U
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3💊1
Если хочешь стать скилловым бэкенд-разработчиком, то пили как можно больше проектов.
В этом курсе их три: генератор блогов, клон Netflix и клон Spotify.
Прокачаешь бэкенд на практике с Python, Django и PostgreSQL😄
👉 @PythonPortal
В этом курсе их три: генератор блогов, клон Netflix и клон Spotify.
Прокачаешь бэкенд на практике с Python, Django и PostgreSQL
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥15❤10💊3
Возможность Python, которую часто недооценивают -> операции над множествами
Вот пример, как можно удалять или обновлять теги, приводя старые и новые значения к множествам, а затем выполняя операции над множествами
Очистка и приведение к множествам:
🔸
🔸
🔸
Удаление существующих тегов:
Добавление новых тегов (без дубликатов):
👉 @PythonPortal
Вот пример, как можно удалять или обновлять теги, приводя старые и новые значения к множествам, а затем выполняя операции над множествами
Очистка и приведение к множествам:
existing = {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)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍6❤4🤯3👀1
Если хочешь вкатиться в ML, а не просто читать теорию, начинай с практики прямо в браузере.
В этом курсе всё: туториалы, Colab-ноутбуки и реальные примеры.
Будешь тренировать модели на Python с TensorFlow, визуализировать в TensorBoard и деплоить хоть в браузер, хоть на сервер.
Подходит и для новичков, и для тех, кто уже пробовал Keras или NumPy😊
👉 @PythonPortal
В этом курсе всё: туториалы, Colab-ноутбуки и реальные примеры.
Будешь тренировать модели на Python с TensorFlow, визуализировать в TensorBoard и деплоить хоть в браузер, хоть на сервер.
Подходит и для новичков, и для тех, кто уже пробовал Keras или NumPy
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍7🔥3💊1
Конструкции в Python, использующие блок
🔸 Условный оператор
🔸 Цикл
🔸 Цикл
🔸 Блок
На фото мы видим 4 примера:
1. проверяет условие. Если
2. Цикл ищет
> Блок else выполняется только если цикл не прерван через
3. Цикл отрабатывает до конца,
>
4. Пытается выполнить 10 / 2. Исключения нет — срабатывает
>
👉 @PythonPortal
else
: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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤40👍15🔥6🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на библиотеку art — делает ASCII-арт из текста за секунды.
Простая установка:
Пример использования:
Идеально для приветственных страничек или добавить декоративный вывод в CLI или логах😊
👉 @PythonPortal
Простая установка:
pip install art
Пример использования:
from art import text2art
Art = text2art("art") # шрифт по умолчанию
print(Art)
# Пример вывода:
# _
# __ _ _ __ | |_
# / _` || '__|| __|
# | (_| || | | |_
# \__,_||_| \__|
Art_block = text2art("art", font='block', chr_ignore=True)
print(Art_block)
# Выведет крупный блок‑текст
Идеально для приветственных страничек или добавить декоративный вывод в CLI или логах
Please open Telegram to view this post
VIEW IN TELEGRAM
❤57👍17🔥11😁3
Аналогично Unix-пайпам, в Python можно строить цепочки функций, переопределяя метод
Это позволяет связывать операции так, что вывод одной функции становится входом для следующей → чисто, читаемо и удобно для композиции
Именно так LangChain реализует элегантные пайплайны вроде:
Пример:
🔸
🔸
🔸
Теперь можно обернуть любые функции в Pipe и комбинировать их в цепочку:
👉 @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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30❤15🏆4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Буквально за считанные минуты собери умного чат-бота для своего сайта
Firecrawl только что выкатили Firestarter — полноценную платформу для чат-ботов, которая:
🔸 Скрейлит твой сайт
🔸 Индексирует контент
🔸 Разворачивает чат-интерфейс с поддержкой RAG и API в стиле OpenAI
Полностью open-source - ccылка
Попробуйте: ссылка
👉 @PythonPortal
Firecrawl только что выкатили Firestarter — полноценную платформу для чат-ботов, которая:
Полностью open-source - ccылка
Попробуйте: ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥4🤝3❤1💊1
Совет по Pytest:
Используйте пользовательские маркеры
Это упрощает организацию и запуск определённых групп тестов
В примере на изображении используются два пользовательских маркера:
🔹
– Применён к тесту для замера производительности
🔹
– Применён к тестам для работы с базой данных
Мы можем запускать выборочно, например тесты, помеченные маркером
👉 @PythonPortal
Используйте пользовательские маркеры
pytest
, чтобы добавлять метаданные к тестам.Это упрощает организацию и запуск определённых групп тестов
В примере на изображении используются два пользовательских маркера:
@pytest.mark.performance
– Применён к тесту для замера производительности
test_page_load_time
@pytest.mark.database
– Применён к тестам для работы с базой данных
test_database_connection
и test_data_integrity
Мы можем запускать выборочно, например тесты, помеченные маркером
@pytest.mark.database
pytest -m database
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤8🔥7🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Я только сегодня узнал об этом трюке с GitHub
Просто введите
Такой простой способ сэкономить время🤯
👉 @PythonPortal
Просто введите
repo.new
в адресной строке браузера — и сразу откроется страница создания нового репозитория на GitHub.Такой простой способ сэкономить время
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43❤12🤔5🏆2
Совет по Python:
Знаете ли вы, что можно задать максимальную длину списка, используя deque из модуля collections?
Класс
В приведённом примере📖
👉 @PythonPortal
deque.maxlen
Знаете ли вы, что можно задать максимальную длину списка, используя deque из модуля collections?
Класс
deque
(двусторонняя очередь) из модуля collections поддерживает параметр maxlen
, который устанавливает максимальный размер очереди. Когда очередь достигает этого размера, добавление новых элементов автоматически удаляет элементы с противоположного конца, реализуя поведение "первым пришёл — первым ушёл" (FIFO) с ограничением по размеру.В приведённом примере
deque
имеет максимальную длину 3. При добавлении значения 4 удаляется 1, что делает такую структуру идеальной для реализации скользящего окна последних трёх элементов Please open Telegram to view this post
VIEW IN TELEGRAM
❤36👍22🤯8🏆1
Numpy CheatSheet.pdf
9 MB
Это шпаргалка по библиотеке NumPy
Краткое руководство по основным операциям и функциям для работы с массивами в Python.😄
👉 @PythonPortal
Краткое руководство по основным операциям и функциям для работы с массивами в Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤11🏆3
This media is not supported in your browser
VIEW IN TELEGRAM
Это что игра What It Prints?
Да, это онлайн-игра‑головоломка для разработчиков и студентов, где нужно угадать, что выведет код. Простая и увлекательная: показывается фрагмент, а вы должны определить его вывод
Для самопроверки самое то💯
👉 @PythonPortal
Да, это онлайн-игра‑головоломка для разработчиков и студентов, где нужно угадать, что выведет код. Простая и увлекательная: показывается фрагмент, а вы должны определить его вывод
Для самопроверки самое то
Please open Telegram to view this post
VIEW IN TELEGRAM
👍44🔥7😢6❤4