Pro Python • IT
4.17K subscribers
1.46K photos
148 videos
45 files
1.41K links
Pro Python — авторский канал с полезными советами, материалами и новостями по Python-программированию.

Сотрудничество (реклама): @NotPriceMedia

Канал на бирже : https://telega.in/c/PythonTechCode
Download Telegram
🕓 Автоматическая метка времени при добавлении записей в БД

В каждой модели часто нужны поля created_at и updated_at. Заполнять их вручную при каждом INSERT и UPDATE — лишняя рутина.

В SQLAlchemy это можно автоматизировать:
from sqlalchemy import Column, DateTime, func
from sqlalchemy.orm import declarative_base

Base = declarative_base()

class User(Base):
__tablename__ = "users"

id = Column("id", primary_key=True)
created_at = Column(DateTime, server_default=func.now())
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())

Теперь база данных сама проставит время создания записи, а при её изменении updated_at получит новое значение.

💡 Такой подход особенно удобен для моделей, где важно отслеживать историю изменений: пользователи, заказы, задачи, логи и т. д.

✅ Мы в Max – подписывайся
❤3
☝🏼 Удобное логирование запросов в консоль

Когда приложение растет, print() для отладки уже перестает справляться — нам нужно полноценное логирование.

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

Вместо стандартного вывода настроим базовую конфигурацию:
import logging
# Настройка логирования
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
logging.info("Приложение запущено ✅")
logging.warning("Предупреждение: что-то не так!")
logging.error("Ошибка: соединение потеряно 🚨")


💡Заменяй print() на logging — так ты получишь более наглядный, управляемый и профессиональный вывод в консоли.

✅ Мы в Max – подписывайся
👍1
🔥Мгновенное объединение сотен CSV-файлов

Устали вручную склеивать данные из разных CSV? Этот лаконичный скрипт сделает всю работу за вас, создавая единый DataFrame из всех файлов в папке.

import pandas as pd
import glob

path = "path/to/csv/files/"
all_files = glob.glob(path + "*.csv")
df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)

print(f"Объединено {len(all_files)} файлов")
print(f"Размер итогового DataFrame: {df.shape}")


Добавьте ignore_index=True чтобы переиндексировать строки и избежать дублирования индексов. Для больших файлов используйте параметр chunksize в pd.read_csv() для экономии памяти.

Идеально для подготовки данных перед анализом, обработки логов или консолидации отчетов.

✅ Мы в Max – подписывайся
🔥2❤1
🟨 История браузера в Python

Нужно получить историю посещённых сайтов программно? Для этого есть библиотека browser-history.

Она умеет извлекать историю посещений из популярных браузеров, а также экспериментально работать с закладками.

Установка:
pip install browser-history


Простой пример:
from browser_history import get_history

# Получаем историю
history = get_history().histories

for date, url in history:
print(date, url)


На выходе получаем пары дата/время + URL, которые можно дальше анализировать, фильтровать или сохранять в файл.

⚠️ Библиотека работает с локальными данными браузеров, поэтому доступ к истории зависит от ОС, браузера и его настроек.

✅ Мы в Max – подписывайся
❤1🔥1
⛔️ Как красиво игнорировать ошибки в Python

Иногда исключение может возникнуть, но отдельно обрабатывать его нет необходимости. Например, файл может отсутствовать, и это не должно останавливать программу.

from contextlib import suppress

with suppress(FileNotFoundError):
open("nonexistent.txt")


Если файл не найден, FileNotFoundError будет проигнорирован, а программа продолжит выполнение.

❗️ Используйте suppress только для ожидаемых и безопасных исключений — иначе можно скрыть настоящую ошибку.

✅ Мы в Max – подписывайся
👍5
👉 Зеркало Python в MAX!

Без рекламы, навязчивых постов и VPN.
❤1
⌨️ Большая подборка тестовых заданий для IT

Здесь собраны реальные задачи от компаний для программистов, тестировщиков и других айтишников.

Особенно здорово раздел по Python — можно и к собесу подготовиться, и просто порешать для себя.

🌐 Ссылка

Всё на русском, много практики.

✅ Мы в Max – подписывайся
🔥1
🆘 Когда данных слишком много

Нужно найти дубликаты в логах, сравнить большие тексты или посчитать уникальных пользователей, не загружая миллионы записей в память?

Datasketch использует вероятностные алгоритмы, которые позволяют анализировать большие объёмы данных с минимальными затратами памяти и времени.

Установка:
pip install datasketch


⚙️ Документация

Полезный инструмент для дедубликации, анализа логов и потоковых данных.

✅ Мы в Max – подписывайся
👍2
📣 Анонимные функции в Python

✅ Мы в Max – подписывайся
🔥1
🔥 ТОП-5 советов Junior-разработчику от Senior’а

Избегай дублирования кода
🔸 Выноси повторяющуюся логику в функции.

Пиши понятный код
🔸 Именуй переменные осмысленно, избегай «магических чисел».

Тестируй граничные случаи
🔸 Проверяй, как код поведёт себя при нулях, пустых строках и крайних значениях.

Оптимизируй с первого раза
🔸 Используй встроенные методы (join(), filter()) вместо «велосипедов».

Учись на Code Review
🔸 Принимай критику, задавай вопросы и разбирай чужой код.


💡Главное: Чем чище код сейчас — тем меньше «костылей» потом!

✅ Мы в Max – подписывайся
👍1
⌨️ Отслеживаем нажатия клавиш в Python

Нужно реагировать на нажатия клавиш или их комбинации прямо из Python?

Библиотека keyboard позволяет перехватывать клавиатурные события и запускать нужный код.

Установка:
pip install keyboard


Например, можно отследить нажатие Esc:
import keyboard

keyboard.wait("esc")
print("Esc нажата")


⚠️ На Linux библиотеке могут потребоваться права администратора.

✅ Мы в Max – подписывайся
👍1
⌨️ Продвинутое использование декораторов

В этой статье мы разберем сложные, но практичные примеры использования декораторов в Python. Рассмотрим регистрацию объектов, вложенные декораторы, декорирование классов, работу с методами и сигнатурами функций, а также реализацию декораторов как классов.

Особое внимание уделено особенностям декорирования методов классов и созданию универсальных декораторов через наследование.


📄 Читать

Статья будет полезна разработчикам, которые хотят глубже понять механику декораторов и применять их в реальных проектах.

✅ Мы в Max – подписывайся
👀2
🐌 Что тормозит ваш Python-код?

Если программа работает медленно, не всегда понятно, где именно она теряет время.

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

Установить библиотеку можно так:
pip install pyinstrument


Затем запустите профилирование из терминала:
pyinstrument app.py


После этого PyInstrument покажет отчёт, по которому будет проще найти узкие места в коде.

⚙️ Документация

✅ Мы в Max – подписывайся
❤1🔥1
❗️Python 3.15 почти готов к релизу

Финальный Release Candidate уже вышел, а стабильный Python 3.15 ожидается 1 октября.

В этот раз акцент не только на синтаксисе.
Разработчики заметно поработали над производительностью и инструментами: улучшили JIT, добавили явные ленивые импорты, новый frozendict, отдельный пакет для профилирования и улучшили сообщения об ошибках.


Также в Python 3.15 UTF-8 становится кодировкой по умолчанию, а некоторые изменения затрагивают типизацию, C API и free-threading.

⚠️ RC уже максимально близок к финальной версии, поэтому самое время проверить свои библиотеки и проекты на совместимость с Python 3.15. (Python.org)

✅ Мы в Max – подписывайся
🔥2
🐼 Pandas — шпаргалка, которая всегда пригодится

Несколько методов, которые стоит знать:

pd.read_csv() — загрузить CSV
df.head() — посмотреть первые строки
df.info() — узнать структуру данных
df.dropna() — убрать пропуски
df.groupby() — сгруппировать данные
df.merge() — объединить таблицы


На картинке — ещё больше полезных методов для загрузки, анализа, фильтрации и обработки данных.

Сохрани, чтобы не искать каждый раз.

✅ Мы в Max – подписывайся
👍3
🐍 Python 3.9. Всё, приехали

Вышел pip 26.1.

Главное: Python 3.9 больше не поддерживается. Для новой версии нужен Python 3.10+.

Обновить:
python -m pip install -U pip


Ещё добавили экспериментальный pylock.toml и немного прокачали работу pip.

✅ Мы в Max – подписывайся
👍3
🔻Есть текст. Нужно достать из него самое важное. Без ручной обработки.

Например, из статьи нужно найти людей, компании и даты.

С LangExtract можно просто описать, что искать, а библиотека с помощью LLM сама найдёт нужные фрагменты и свяжет их с исходным текстом.

import langextract as lx

result = lx.extract(
text_or_documents=text,
prompt_description="Найди людей, компании и даты",
model_id="gemini-3.5-flash"
)


Получаем структурированные данные вместо простыни текста.

Установка:
pip install langextract


💡LangExtract умеет работать с длинными документами, облачными и локальными моделями, а ещё визуально показывает, где именно в тексте найден каждый результат.

✅ Мы в Max – подписывайся
👍3
🫥 Когда добавили ещё одну фичу

✅ Мы в Max – подписывайся
😁9
🐍 Python 3.15: re.match() уходит в прошлое

re.match() пока никуда не исчезает, но для нового кода его рекомендуют больше не использовать.

Проблема в названии: оно не очень понятно объясняет, что функция ищет совпадение только с начала строки.

В Python 3.15 появился более понятный вариант — re.prefixmatch():
re.search()       # где угодно

re.prefixmatch() # только с начала

re.fullmatch() # вся строка


То есть вместо re.match() в новом коде стоит использовать re.prefixmatch().

re.match() получил статус soft deprecated — код продолжит работать, предупреждений не будет и удалять функцию пока не планируют.

✅ Мы в Max – подписывайся
👍5