TGViewer
Channel Public Channel
Python Portal

Python Portal

@pythonportal

Всё самое интересное из мира Python

Сотрудничество, реклама: @devmangx

Работаем с @Spiral_Yuri

РКН: https://clck.ru/3GMMF6
Subscribers
50.5K
Photos
2.9K
Videos
491
Links
1.3K

Showing posts older than #4544 · Back to latest

Older Posts 19 shown
Post #4542 11.3K
Python позволяет выровнять текст по центру одной строкой.

Без вычислений и форматных хаках.

Можно даже задать символ для заполнения.

Отлично подходит для баннеров, логов или текстовых интерфейсов в терминале. 🐸

👉 @PythonPortal
  • 🔥 57
  • ❤ 14
  • 👍 12
Post #4541 12K
Это расширение для VS Code от Google — настоящий геймченджер

Позволяет запускать Gemini прямо внутри редактора, выступая в роли умного AI-помощника для программирования.

Отличная альтернатива таким инструментам, как GitHub Copilot ✊

👉 @PythonPortal
  • 👍 38
  • ❤ 11
  • 🔥 2
  • 🌚 2
  • 👀 1
Post #4538 13K
Эта фича в VS Code — суперсила, о которой 90% разработчиков не знают

Называется Forward Port и позволяет пробросить локальный порт в интернет и поделиться своим проектом снаружи. 🫥

👉 @PythonPortal
  • 👍 64
  • ❤ 14
  • 🔥 7
  • 🤔 5
Post #4537 12.3K
Экранный рекордер с помощью Python

screen_size = pyautogui.size()
fps = 20
fourcc = cv2.VideoWriter_fourcc(*"XVID")
output_file = "screen_recording_clcoding.mp4"
out = cv2.VideoWriter(output_file, fourcc, fps, (screen_size.width, screen_size.height))


🔸screen_size = pyautogui.size() — получаем разрешение экрана (ширину и высоту).
🔸fps = 20 — задаём частоту кадров (20 кадров в секунду).
🔸fourcc — кодек видео (XVID).
🔸output_file — имя файла для сохранения.
🔸cv2.VideoWriter(...) — создаёт объект, который будет записывать кадры в видеофайл.

Старт записи

print("Recording... Press 'q' to stop.")


Сообщение пользователю, что началась запись и как её остановить.

Главный цикл записи

while True:
screen = pyautogui.screenshot()
frame = np.array(screen)
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
out.write(frame)


Что происходит:

🔸pyautogui.screenshot() — делает скриншот всего экрана.
🔸np.array(screen) — переводим скриншот в массив пикселей.
🔸cv2.cvtColor(..., cv2.COLOR_RGB2BGR) — OpenCV использует BGR-порядок, а pyautogui возвращает RGB, нужно преобразовать.
🔸out.write(frame) — сохраняем кадр в видеофайл.

Остановка по нажатию клавиши 'q'

if keyboard.is_pressed('q'):
print("Recording stopped.")
break


Как только пользователь нажимает клавишу 'q', цикл прерывается.

Сохраняем и закрываем файл

out.release()
print(f"Video saved to {output_file}")


🔸out.release() — освобождаем ресурсы и сохраняем файл.

👉 @PythonPortal
  • 👍 29
  • ❤ 11
  • 🏆 2
  • 👀 1
Post #4536 12K
Ultimate Python — практичный гайд по чистому Python

Мини‑модули по ключевым темам Python, от переменных до многопоточности. Учишься по шагам.

Никаких сторонних библиотек — тык

👉 @PythonPortal
  • ❤ 33
  • 🏆 3
  • 👍 2
Post #4535 10.9K
3D контурный график на Python

1. Импортируем библиотеки:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


> numpy — для работы с массивами
> matplotlib.pyplot — для построения графиков
> mpl_toolkits.mplot3d — модуль для 3D-графиков

2. Создаём координатную сетку:

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)


🔹linspace создаёт равномерные значения по X и Y
🔹meshgrid строит двумерную сетку координат

3. Определяем функцию:

def f(x, y):
return np.sin(np.sqrt(x**2 + y**2))


Это функция поверхности, значения которой будут отображаться через контуры по оси Z

4. Вычисляем значения Z:

Z = f(X, Y)


Получаем двумерный массив значений Z для каждой точки (X, Y)

5. Создаём фигуру и 3D-подграфик:

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')


Создаём фигуру и добавляем 3D‑ось

6. Рисуем контуры в 3D:

contour = ax.contour3D(X, Y, Z, 50, cmap='viridis')


> contour3D рисует линии уровня
> 50 — число уровней
> cmap='viridis' — цветовая палитра

7. Подписываем оси и добавляем шкалу:

ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
fig.colorbar(contour, ax=ax, label='Z values')


Добавляем подписи и цветовую шкалу (colorbar) для значений Z

8. Показываем график:

plt.show()


👉 @PythonPortal
  • ❤ 39
  • 👍 12
  • 🤯 8
Post #4534 11.8K
uv — это пакетный менеджер для Python, написанный на Rust и созданный с прицелом на скорость и надёжность.

uv — невероятно быстрый

- Создание виртуальных окружений с помощью uv примерно в 80 раз быстрее, чем через python -m venv.

- Установка пакетов происходит в 4–12 раз быстрее без кэша и примерно в 100 раз быстрее с кэшированием.

Он заменяет не только pip, но и такие инструменты, как pip-tools, virtualenv, pipx, poetry и pyenv — всё в виде одного standalone-бинарника.

Вот шпаргалка по uv для Python-разработчиков ♟

🔹uv init <project-name>
— Инициализирует новый Python-проект с дефолтной структурой.

🔹uv venv
— Создаёт новое виртуальное окружение в текущем проекте.

🔹uv add <package-name>
— Добавляет пакет в зависимости проекта.

🔹uv pip install -r requirements.txt
— Устанавливает все зависимости из файла requirements.txt.

🔹uv remove <package-name>
— Удаляет указанный пакет из зависимостей проекта.

🔹uv run script.py
— Запускает Python-скрипт или команду внутри окружения проекта.

🔹uv sync
— Синхронизирует зависимости проекта в соответствии с uv.lock.

🔹uv tool install <tool-name>
— Устанавливает Python CLI-инструмент как глобальный тул.
Пример: uv tool install ruff

🔹uvx <tool> [args]
— Запускает CLI-инструмент во временном окружении без установки.
Пример: uvx black script.py

👉 @PythonPortal
  • 👍 33
  • ❤ 17
  • 🔥 9
  • 🏆 2
Post #4533 13.3K
Это одно из самых безумных расширений для VS Code, что я видел за последнее время

GitLantis визуализирует структуру проекта в виде 3D-подводного мира. Да, буквально — ты «плаваешь» по директориям, как по рифам в Атлантике. Атмосферно и безумно красиво 😮

👉 @PythonPortal
  • 😁 82
  • 👍 26
  • 🤔 8
  • ❤ 7
  • 💊 6
  • 👀 3
  • 🌚 1
Post #4532 13.7K
Это библия для разработчиков: вся нужная документация в одном месте

✓ Языки программирования, библиотеки, фреймворки
✓ Поиск сразу по всем источникам
✓ Всегда актуальные версии

Дока обновляется каждый день. Открывай в одной вкладке хоть Python, Postgres и Bash

Никакой рекламы, всё супербыстро → devdocs․io 😱

👉 @PythonPortal
  • ❤ 32
  • 👍 8
  • 🤯 4
  • 🔥 2
Post #4531 12.6K
Совет по Pytest:

Используйте @pytest.mark.skipif, чтобы условно пропускать тесты в зависимости от определённых условий — например, платформы, наличия зависимостей или значений переменных окружения

Декоратор @pytest.mark.skipif(...) указывает Pytest пропустить выполнение теста, если условие истинно.

В примере, тест пропускается, если используется Python версии ниже 3.9, потому что оператор объединения словарей (|) появился только в Python 3.9.

Аргумент reason сообщает причину пропуска, которая отображается в отчёте Pytest.

👉 @PythonPortal
  • 👍 15
  • ❤ 6
  • 🔥 5
Post #4530 13.5K
Text-to-Speech нового уровня

Chatterbox — первый open-source TTS, готовый к продакшену.

➣ Задержки менее 200 мс
➣ Синтеза речи нулевого выстрела (zero-shot) на уровне SoTA
➣ Управления эмоциями и выразительностью

Полностью open-source 😱

👉 @PythonPortal
  • ❤ 20
  • 👍 8
Post #4528 12.8K
Практический Python от Дэвида Бизли (один из самых уважаемых экспертов по Python, автор книги "Python Essential Reference")

Курс учит не просто писать код, а думать как интерпретатор, избегая фреймворков. Всё на голом Python, от функций до генераторов и итераторов

Материал подаётся плотно, с минимальной теорией и сразу с практикой.

Курс доступен онлайн, без регистрации и бесплатно, включая слайды, заметки и упражнения 🤔

Ссылка на курс: тык

👉 @PythonPortal
  • 🔥 38
  • ❤ 12
  • 👍 11
  • 🤣 2
Post #4527 12.2K
Pandas vs PySpark

Если ты работаешь с небольшими данными на ноутбуке или с большими объёмами на кластере — именно Pandas и PySpark лежат в основе современной аналитики данных.

Когда я только начинал, постоянно ловил себя на вопросах: «А как сделать эту операцию из Pandas в PySpark?»
или «Какой эквивалент у этого DataFrame-кода в PySpark?» 😨

Переключаться между ними было непросто — разный синтаксис, разный подход. Поэтому держи простую шпаргалку с командами в лоб-в-лоб, чтобы упростить переход.

Что внутри:
❯ Удобный выбор, фильтрация и сортировка строк
❯ Группировка, агрегации и join’ы без боли
❯ Обработка пропущенных значений
❯ Плавный перенос логики между Pandas и PySpark

Совет: если освоишь обе библиотеки — сможешь уверенно переключаться между небольшими проектами и масштабными пайплайнами.

И не забывай:

«В Pandas ты учишься ремеслу. В PySpark — масштабированию.»



👉 @PythonPortal
  • ❤ 36
  • 👍 6
  • 🏆 5
Post #4526 11.6K
Всё, что нужно для трассировки LLM-приложений это Python-декоратор (open-source).

Большинство метрик для LLM оценивают приложение как чёрный ящик от начала до конца.

Но LLM-приложения требуют оценки и трассировки на уровне компонентов, ведь ошибка может быть где угодно: в ретривере, вызове инструмента или самом LLM.

С помощью deepeval это делается всего в 3 строки кода:

– Используй декоратор @observe, чтобы трассировать отдельные компоненты (инструменты, ретриверы, генераторы)
– Привязывай метрики к каждому из компонентов
– Получай визуальный разбор — что работает, а что ломается

И всё. Переписывать существующий код не нужно. 😄

Пример есть выше для RAG-приложения.

Deepeval — полностью open-source, уже 8500+ звёзд на GitHub. Можно легко задеплоить у себя. Все данные останутся под твоим контролем.

👉 @PythonPortal
  • ❤ 13
  • 👍 9
  • 🔥 5
Post #4525 12.4K
Наткнулся на годный репозиторий для изучения Data Science с Python 😮

Это полный текст книги Python Data Science Handbook в формате Jupyter-ноутбуков — прямо на GitHub

Можно изучать NumPy, Pandas, Matplotlib, Scikit-Learn и другие библиотеки прямо в интерактивном формате. Подойдёт и для новичков, и как шпаргалка для практиков

👉 @PythonPortal
  • 👍 21
  • ❤ 15
  • 🔥 7
Post #4523 11.6K
Преобразование систем счисления в Python с использованием встроенных функций

🔹Из десятичной в двоичную

decimal_number = 10
binary_number = bin(decimal_number)
print(binary_number)
# Вывод: '0b1010'


🔹Из двоичной в десятичную

binary_number = '1010'
decimal_number = int(binary_number, 2)
print(decimal_number)
# Вывод: 10


🔹Из десятичной в восьмеричную

decimal_number = 10
octal_number = oct(decimal_number)
print(octal_number)
# Вывод: '0o12'


🔹Из восьмеричной в десятичную

octal_number = '12'
decimal_number = int(octal_number, 8)
print(decimal_number)
# Вывод: 10


🔹Из десятичной в шестнадцатеричную

decimal_number = 10
hex_number = hex(decimal_number)
print(hex_number)
# Вывод: '0xa'


🔹Из шестнадцатеричной в десятичную

hex_number = 'a'
decimal_number = int(hex_number, 16)
print(decimal_number)
# Вывод: 10


👉 @PythonPortal
  • ❤ 39
  • 👍 17
  • 🔥 8
  • 🏆 2
Post #4522 11.2K
Google представила мощного AI-ассистента для работы в терминале — Gemini CLI

На текущем этапе инструмент фактически доступен бесплатно, работает на базе модели Gemini 2.5 Pro, с такими лимитами:

- До 60 запросов в минуту
- До 1000 запросов в день

Для личного использования этих ограничений более чем достаточно. На фоне подписок по $10–20 в месяц на другие AI-инструменты для разработки — Google действительно щедр. 😮

• Контекст до 1 млн токенов
• Мультимодальность: UI-скетчи, PDF → код
• Автопоиск PR и merge-автоматизация
• Поддержка MCP-протокола
• Встроенный Google Search

👉 @PythonPortal
  • ❤ 24
  • 👍 10
  • 🔥 6
  • 🤔 1
Post #4519 11.9K
Многие разработчики на Python считают метод __init__() конструктором, но на самом деле это не так.

Настоящий конструктор в Python — это метод __new__(). Давайте разберёмся, как это доказать, на небольшом примере.

Сначала добавим несколько print-вызовов в метод __init__(), чтобы понять, что происходит при создании экземпляра класса: (2 фото)

Теперь добавим метод __new__() и посмотрим, вызывается ли __init__() до или после __new__(). (3 фото)

Если запустить этот код, станет видно, что первым вызывается именно метод __new__()

Хочу отметить, что в большинстве случаев вам не придётся использовать метод __new__() в своём коде. На практике он применяется почти исключительно в метапрограммировании, фабричных функциях и при работе с API — по крайней мере, из того, что мне доводилось видеть.

Так что продолжайте спокойно использовать проверенный метод __init__() — он по-прежнему отлично справляется со своей задачей 😄

👉 @PythonPortal
  • 👍 36
  • ❤ 16
  • 💊 8
  • 🔥 5
  • 🤔 2
  • 👀 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →