Что такое аннотация типов?
Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.
Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.
Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.
Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).
Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.
Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.
Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.
Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).
Что такое дескрипторы?
Дескрипторы — это механизм, который позволяет контролировать доступ к атрибутам классов. Они предоставляют способ определения специальных методов для доступа, присваивания и удаления атрибутов. Дескрипторы часто используются для реализации логики, связанной с доступом к данным, внутри классов.
Для создания дескриптора нужно определить класс, который реализует хотя бы один из трех вышеуказанных методов. Затем экземпляры этого класса могут быть присвоены атрибутам других классов.
Дескрипторы — это механизм, который позволяет контролировать доступ к атрибутам классов. Они предоставляют способ определения специальных методов для доступа, присваивания и удаления атрибутов. Дескрипторы часто используются для реализации логики, связанной с доступом к данным, внутри классов.
Для создания дескриптора нужно определить класс, который реализует хотя бы один из трех вышеуказанных методов. Затем экземпляры этого класса могут быть присвоены атрибутам других классов.
Memray
Memray - это библиотека для профилирования памяти и она является важным инструментом оптимизации производительности Python программ.
Библиотека отслеживает выделение и освобождение памяти при работе программы, поддерживает отслеживание ссылок на объект, применятся для профилирования на серверах и в виртуальных окружениях.
В примере мы используем декоратор memray.profile, который будет отслеживать все выделение и освобождение памяти внутри функции my_func().
При запуске этого кода memray выведет отчёт.
Memray - это библиотека для профилирования памяти и она является важным инструментом оптимизации производительности Python программ.
Библиотека отслеживает выделение и освобождение памяти при работе программы, поддерживает отслеживание ссылок на объект, применятся для профилирования на серверах и в виртуальных окружениях.
В примере мы используем декоратор memray.profile, который будет отслеживать все выделение и освобождение памяти внутри функции my_func().
При запуске этого кода memray выведет отчёт.
SpaCy
Библиотека предоставляет множество инструментов для более сложных задач обработки текста, таких как анализ тональности, извлечение ключевых фраз, машинное обучение и многое другое. Подробнее про SpaCy
SpaCy — это библиотека для обработки естественного языка (NLP) на языке Python. Она предоставляет инструменты для сегментации текста, анализа грамматики, извлечения информации и многих других задач, связанных с обработкой текста. Библиотека предоставляет множество инструментов для более сложных задач обработки текста, таких как анализ тональности, извлечение ключевых фраз, машинное обучение и многое другое. Подробнее про SpaCy
❤1
Метод isalpha()
Метод
Как видно в примере выше, первая строка состоит только из букв, поэтому
Метод
isalpha() является строковым методом, который позволяет проверить, состоит ли каждый символ в строке из букв (алфавитных символов). Он возвращает True, если все символы в строке являются буквами, и False в противном случае.Как видно в примере выше, первая строка состоит только из букв, поэтому
isalpha() возвращает True. Вторая строка содержит символы, которые не являются буквами (запятая и восклицательный знак), поэтому isalpha() возвращает False.pyperclip
Для установки
После установки библиотеки, вы можете использовать ее в своем Python-коде.
pyperclip — это библиотека Python, которая предоставляет простой способ копирования и вставки текста в буфер обмена (clipboard) операционной системы. Вы можете использовать pyperclip для копирования текста в буфер обмена и вставки текста из буфера обмена в свой Python-скрипт.Для установки
pyperclip, вы можете использовать инструмент управления пакетами Python, такой как pip. Откройте терминал или командную строку и выполните следующую команду:pip install pyperclip
После установки библиотеки, вы можете использовать ее в своем Python-коде.
PySnooper
PySnooper — это библиотека для отладки, которая позволяет логгировать каждую строку выполняемого кода вместе со значениями переменных. Она полезна, когда нужно понять, как работает код и где происходят изменения переменных.
Для использования необходимо декорировать функцию, которую нужно отладить с помощью
Результат использования pysnooper предоставлен на изображении.
PySnooper — это библиотека для отладки, которая позволяет логгировать каждую строку выполняемого кода вместе со значениями переменных. Она полезна, когда нужно понять, как работает код и где происходят изменения переменных.
Для использования необходимо декорировать функцию, которую нужно отладить с помощью
@pysnooper.snoop(). Вид лога можно настроить с помощью параметров: variables — какие переменные отображать, depth — максимальная вложенность структур данных, prefix — префикс для каждой строки лога.Результат использования pysnooper предоставлен на изображении.
❤1
PySnooper
PySnooper — это библиотека для Python, которая позволяет вам добавлять отладочные точки в ваш код для отслеживания значений переменных и выполнения дополнительных действий при выполнении программы. Это полезный инструмент для отладки, поскольку он позволяет вам легко исследовать, какие значения принимают переменные в определенный момент времени и какой код выполняется.
При выполнении функции из примера PySnooper будет записывать значения переменных и их изменения во время выполнения функции в стандартный вывод, что облегчает отладку. Вы также можете настроить PySnooper для записи данных в файлы и выполнять другие действия при отладке.
PySnooper — это библиотека для Python, которая позволяет вам добавлять отладочные точки в ваш код для отслеживания значений переменных и выполнения дополнительных действий при выполнении программы. Это полезный инструмент для отладки, поскольку он позволяет вам легко исследовать, какие значения принимают переменные в определенный момент времени и какой код выполняется.
При выполнении функции из примера PySnooper будет записывать значения переменных и их изменения во время выполнения функции в стандартный вывод, что облегчает отладку. Вы также можете настроить PySnooper для записи данных в файлы и выполнять другие действия при отладке.
👍2❤🔥1🔥1🥰1
Ключевая идея: не загружать файл целиком — читать потоками, обрабатывать и сразу сохранять результат.
Pandas — удобный и практичный путь
for chunk in pd.read_csv("huge.csv", chunksize=100_000, usecols=["id","amount"], dtype={"id":str}):
chunk = chunk[chunk["amount"]>0]
chunk.to_csv("out.csv", mode="a", header=first, index=False)
first = False— указывайте
usecols, dtype и не парсите даты по умолчанию.Низкоуровневый поток — минимальная память
import csv
with open("huge.csv", newline='') as r, open("out.csv","w",newline='') as w:
reader, writer = csv.DictReader(r), csv.DictWriter(w, fieldnames=["id","amount"])
writer.writeheader()
for row in reader:
writer.writerow({"id": row["id"], "amount": float(row["amount"])*0.012})
— идеально для простых построчных трансформаций и сжатия вывода.
Когда что выбирать
pandas + chunksize.csv + генераторы.chunksize + multiprocessing (но не накапливайте чанки в памяти).Быстрый чеклист перед запуском на полном файле
usecols и dtype.chunksize (50–200k — старт).Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥3
Знакомьтесь: uv от Astral (те же ребята, что сделали Ruff). Это менеджер пакетов на Rust, который в 10-100x быстрее обычного pip.
Зачем он нужен, если есть poetry?
✅ Скорость — установка зависимостей за секунды, а не минуты
✅ Универсальность — заменяет pip, poetry, pyenv, virtualenv и pip-tools сразу
✅ Стандарты — полная совместимость с pyproject.toml
✅ Совместимость — лучше разрешает конфликты версий, чем poetry
Миграция за 3 команды:
# Установка
curl -LsSf https://astral.sh/uv/install.sh | sh
# Создаём окружение (вместо python -m venv)
uv venv
# Устанавливаем зависимости из pyproject.toml
uv pip install -e .
Ключевые отличия от poetry:
🔹
uv pip — дроп-ин замена pip (работает с requirements.txt)🔹
uv run — запускает скрипты в изолированном окружении без активации venv🔹
uv lock — генерирует lock-файл (как poetry.lock, но быстрее)Готовый workflow для проекта:
uv init myproject # создаёт структуру проекта
uv add fastapi # добавляет зависимость
uv run main.py # запускает с автоматической установкой
uv build && uv publish # сборка и публикация
Стоит ли мигрировать?
Да, если:
- Устали от медленного poetry на больших проектах
- Нужна простота pip + скорость Rust
- Работаете в CI/CD — экономия времени критична
Пока подождите, если:
- Сложный setup с плагинами poetry
- Активно используете poetry shell (в uv пока нет прямого аналога)
Личный опыт: на проекте с 50+ зависимостями установка сократилась с 2 минут до 8 секунд. Poetry удалять пока не спешу, но для новых проектов — только uv
Пробовали uv? Делитесь опытом в комментах 👇
#python #uv #packaging #devtools
Please open Telegram to view this post
VIEW IN TELEGRAM
astral.sh
Astral: High-performance Python tooling
Astral builds high-performance developer tools for the Python ecosystem: Ruff, ty, and uv, an extremely fast Python package manager, written in Rust.
🔥2❤1💯1
Если вы работаете с Python, то наверняка знакомы с Pydantic — «телохранителем» вашего кода, который следит, чтобы в переменные не попало ничего лишнего. Но пришло время двигаться дальше: вторая версия библиотеки — это не просто минорное обновление, а настоящий технический скачок!
Что же изменилось и почему вам стоит обновиться прямо сейчас?
Главная новость: ядро Pydantic v2 полностью переписано на Rust. Это значит, что валидация стала быстрее в 5–50 раз! Теперь проверка огромных JSON-файлов не будет «бутылочным горлышком» вашего приложения.
🛠 Что нового в коде?
Разработчики навели порядок в API, сделав его более логичным и предсказуемым:
• Префикс
model_: Теперь все встроенные методы начинаются одинаково (например, model_validate() вместо старого from_orm()). Это исключает путаницу с вашими собственными полями.• Strict Mode: Теперь можно заставить Pydantic быть «строгим». Больше никакой автоматической конвертации строки "123" в число, если вы этого явно не разрешили.
• TypeAdapter: Теперь можно валидировать простые типы (например, список строк или словарей) без создания целого класса модели.
🎢 Как переехать с v1 и не сломать всё?
Миграция может показаться пугающей, но команда Pydantic позаботилась о нас:
1. Пакет
pydantic.v1: Вы можете использовать обе версии в одном проекте параллельно. Это позволяет обновлять код по частям, а не всё сразу.2. Инструмент
bump-pydantic: Это магическая утилита, которая автоматически перепишет большую часть вашего старого кода под новый стандарт.А вы уже перешли на вторую версию или пока присматриваетесь? Поделитесь в комментариях, какой функции вам больше всего не хватало в v1
#Python #Pydantic #Backend #Programming #WebDevelopment
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1😁1