Just Python
10.2K subscribers
4.39K photos
11 videos
4.37K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
isinstance(object, classinfo)

Функция проверяет, относится ли объект к типу classinfo. Возможно это тот самый classinfo, а может дочерний тип.

Мы можем передать кортеж, тогда функция будет проверять, относится ли объект к одному из переданных типов.

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

#theory // Just Python
Получаем курс валют

Узнать цену биткоина в $ или получить стоимость доллара в рублях. Всё это можно сделать с помощью forex-python.

Установка: pip install forex-python

На самом деле это просто клиент для этого сайта. Список доступных валют можно посмотреть тут. Также модуль может конвертировать одну валюту в другую.

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

#theory // Just Python
Асинхронная замена requests

С помощью aiohttp мы можем не только составлять запросы, а также создавать HTTP-серверы.

Установка: pip install aiohttp
Для быстрой работы DNS: pip install aiodns.

Помимо того, что модуль асинхронный, он ещё и поддерживает Middlewares, сигналы, подключаемую маршрутизацию и многое другое.

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

#theory // Just Python
Ещё не надоело работать с os.path?

С Python 3.4 есть отличная альтернатива — pathlib. Он упрощает работу с путями и добавляет новые функции.

Помимо того, что вы теперь можете удобно составлять пути, так ещё и работать с ними (rename(), rmdir(), etc).

К тому же пути нормально работают на Windows и Linux. А если ваш код всё ещё использует os, то pathlib совместим с этим модулем.

#theory // Just Python
Упрощаем работу с SQL

Автор FastAPI придумал SQLModel, который упрощает работу с базами данных. Он объединяет в себе Pydantic и SQLAlchemy.

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

Таким образом работу с движком БД мы перекладываем на SQLAlchemy, а обработку данных, проверку и перевод в нужный тип на Pydantic.

Кстати, библиотека хорошо работает с fastapi. Вряд-ли это из-за того, что автор один и тот же.

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

#theory // Just Python
Знаете, как работает словарь?

Лучше не знать. Начнём с того, что он принимает только хешируемые объекты, то есть те, у которых есть метод __hash__. Это str, tuple, frozenset и другие неизменяемые объекты.
После их запихивают в хеш-таблицу (есть на эту тему классная статья). Если просто, то это «гардеробная». Вы даёте номерок и вам выдают вещь.

#theory // Just Python
Перемещение файлов в Python

Для удобной манипуляции с файлами и папками в стандартной библиотеки Python существует специальный модуль shutil.

Функция shutil.move(source, destination) позволяет вам переместить любой файл или папку (даже непустую). Обратите внимание, что если destination — это уже существующая папка, то файл/папка будет перемещена внутрь неё, в остальных случаях файл/папка будут скопированы точно по нужному адресу.

В случае успеха, функция вернёт новое местоположение файла. Если destination существует и не является папкой, то будет выброшена ошибка.

#theory // Just Python
Я знаю что так будет, но почему?

Во первых вспоминаем, что значения по умолчанию генерируются только один раз и хранятся в func.__defaults__.

Во вторых, вспоминаем про булевые операции, что они могут возвращать не только True/False, а и сами значения.

#theory // Just Python
Интерфейс командной строки

Самостоятельный парсинг аргументов даже с argparse вызывает трудности. Чтобы их избежать, стоит установить typer.

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

Это — интуинтивно понятный модуль для создания FAST API интерфейсов командой строки. Проще говоря, вы сможете создавать команды по типу git branch -b main.

Библиотека сама создаст usage и --help сообщения на основе документации используемых функций или переданных аргументов.

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

#theory // Just Python
VSCode в браузере

Если у вас слабый пк или просто лень скачивать IDE на свой пк, то можете запустить его в браузере.

Он поддерживает почти все функции десктопного редактора, так ещё может подключаться к git репозиторию и править там (если есть доступ).

Единственный недостаток — расширения. Они доступны, но с серьёзными ограничениями. Python работает, уже хорошо.

Ссылка на сайт

#tools // Just Python
raise ... from

Оператор может быть полезен при преобразовании исключений из одного типа в другой.

Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к __clause__.

Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.

#theory // Just Python
Zoneinfo

В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.

Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.

#theory // Just Python
tomllib

Это новая встроенная в Python библиотека для работы с TOML конфигурационными файлами.

#theory // Just Python
Оператор преобразования raise ... from

Оператор может быть полезен при преобразовании исключений из одного типа в другой.

Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к __clause__.

Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.

#theory // Just Python
Модуль временных зон

В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.

Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.

#modules // Just Python
Python кэширует все импортированные модули в sys.modules

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

Чтобы его намеренно выполнить снова, воспользуйтесь importlib.reload(), но будьте осторожны, ведь это пересоздаст все объекты и создаст ошибки, которые сложно найти.

#theory // Just Python
ParamSpec

Это специальный тип для спецификации параметров.

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

Так мы можем получать подсказки по декорируемой функции, которых бы не было без ParamSpec.

Добавлено в Python 3.10.

#theory // Just Python
Что такое аннотация типов?

Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.

Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.

Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.

Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).

#theory // Just Python
Что такое дескрипторы?

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

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

#theory // Just Python
Гуглим с помощью Python

Установка необходимых пакетов — pip install beautifulsoup4 и pip install google.

В нашем примере мы задаем в поиске слово "Python" и получаем ссылки на 3 самых популярных по мнению Google сайтов о Python.

#theory // Just Python