Ещё не надоело работать с os.path?
С Python 3.4 есть отличная альтернатива — pathlib. Он упрощает работу с путями и добавляет новые функции.
Помимо того, что вы теперь можете удобно составлять пути, так ещё и работать с ними (
К тому же пути нормально работают на Windows и Linux. А если ваш код всё ещё использует os, то pathlib совместим с этим модулем.
#theory // Just Python
С Python 3.4 есть отличная альтернатива — pathlib. Он упрощает работу с путями и добавляет новые функции.
Помимо того, что вы теперь можете удобно составлять пути, так ещё и работать с ними (
rename(), rmdir(), etc).К тому же пути нормально работают на Windows и Linux. А если ваш код всё ещё использует os, то pathlib совместим с этим модулем.
#theory // Just Python
Упрощаем работу с SQL
Автор FastAPI придумал SQLModel, который упрощает работу с базами данных. Он объединяет в себе Pydantic и SQLAlchemy.
Установка:
Кстати, библиотека хорошо работает с
Документация
#theory // Just Python
Автор FastAPI придумал SQLModel, который упрощает работу с базами данных. Он объединяет в себе Pydantic и SQLAlchemy.
Установка:
pip install sqlmodel
Таким образом работу с движком БД мы перекладываем на SQLAlchemy, а обработку данных, проверку и перевод в нужный тип на Pydantic. Кстати, библиотека хорошо работает с
fastapi. Вряд-ли это из-за того, что автор один и тот же.Документация
#theory // Just Python
Знаете, как работает словарь?
Лучше не знать. Начнём с того, что он принимает только хешируемые объекты, то есть те, у которых есть метод
После их запихивают в хеш-таблицу (есть на эту тему классная статья). Если просто, то это «гардеробная». Вы даёте номерок и вам выдают вещь.
#theory // Just Python
Лучше не знать. Начнём с того, что он принимает только хешируемые объекты, то есть те, у которых есть метод
__hash__. Это str, tuple, frozenset и другие неизменяемые объекты.После их запихивают в хеш-таблицу (есть на эту тему классная статья). Если просто, то это «гардеробная». Вы даёте номерок и вам выдают вещь.
#theory // Just Python
Перемещение файлов в Python
Для удобной манипуляции с файлами и папками в стандартной библиотеки Python существует специальный модуль
Функция
В случае успеха, функция вернёт новое местоположение файла. Если
#theory // Just Python
Для удобной манипуляции с файлами и папками в стандартной библиотеки Python существует специальный модуль
shutil. Функция
shutil.move(source, destination) позволяет вам переместить любой файл или папку (даже непустую). Обратите внимание, что если destination — это уже существующая папка, то файл/папка будет перемещена внутрь неё, в остальных случаях файл/папка будут скопированы точно по нужному адресу. В случае успеха, функция вернёт новое местоположение файла. Если
destination существует и не является папкой, то будет выброшена ошибка.#theory // Just Python
Я знаю что так будет, но почему?
Во первых вспоминаем, что значения по умолчанию генерируются только один раз и хранятся в
Во вторых, вспоминаем про булевые операции, что они могут возвращать не только True/False, а и сами значения.
#theory // Just Python
Во первых вспоминаем, что значения по умолчанию генерируются только один раз и хранятся в
func.__defaults__.Во вторых, вспоминаем про булевые операции, что они могут возвращать не только True/False, а и сами значения.
#theory // Just Python
Интерфейс командной строки
Самостоятельный парсинг аргументов даже с argparse вызывает трудности. Чтобы их избежать, стоит установить typer.
Установка:
Библиотека сама создаст usage и --help сообщения на основе документации используемых функций или переданных аргументов.
📌 Документация
#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
Если у вас слабый пк или просто лень скачивать IDE на свой пк, то можете запустить его в браузере.
Он поддерживает почти все функции десктопного редактора, так ещё может подключаться к git репозиторию и править там (если есть доступ).
Единственный недостаток — расширения. Они доступны, но с серьёзными ограничениями. Python работает, уже хорошо.
Ссылка на сайт
#tools // Just Python
raise ... from
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
#theory // Just Python
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
__clause__.Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
#theory // Just Python
Zoneinfo
В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.
Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.
#theory // Just Python
В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.
Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.
#theory // Just Python
tomllib
Это новая встроенная в Python библиотека для работы с TOML конфигурационными файлами.
#theory // Just Python
Это новая встроенная в Python библиотека для работы с TOML конфигурационными файлами.
#theory // Just Python
Оператор преобразования raise ... from
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
#theory // Just Python
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
__clause__.Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
#theory // Just Python
Модуль временных зон
В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.
Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.
#modules // Just Python
В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.
Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.
#modules // Just Python
Python кэширует все импортированные модули в sys.modules
Это сделано ради оптимизации, чтобы каждый раз не выполнять модуль, а один раз его вытащить и использовать в проекте.
Чтобы его намеренно выполнить снова, воспользуйтесь
#theory // Just Python
Это сделано ради оптимизации, чтобы каждый раз не выполнять модуль, а один раз его вытащить и использовать в проекте.
Чтобы его намеренно выполнить снова, воспользуйтесь
importlib.reload(), но будьте осторожны, ведь это пересоздаст все объекты и создаст ошибки, которые сложно найти.#theory // Just Python
ParamSpec
Это специальный тип для спецификации параметров.
Он часто используется с декораторами, когда мы не знаем какие параметры будет получать декорируемая функция и не можем заранее их задать.
Так мы можем получать подсказки по декорируемой функции, которых бы не было без ParamSpec.
Добавлено в Python 3.10.
#theory // Just Python
Это специальный тип для спецификации параметров.
Он часто используется с декораторами, когда мы не знаем какие параметры будет получать декорируемая функция и не можем заранее их задать.
Так мы можем получать подсказки по декорируемой функции, которых бы не было без 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
Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.
Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.
Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.
Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).
#theory // Just Python
Что такое дескрипторы?
Дескрипторы — это механизм, который позволяет контролировать доступ к атрибутам классов. Они предоставляют способ определения специальных методов для доступа, присваивания и удаления атрибутов. Дескрипторы часто используются для реализации логики, связанной с доступом к данным, внутри классов.
Для создания дескриптора нужно определить класс, который реализует хотя бы один из трех вышеуказанных методов. Затем экземпляры этого класса могут быть присвоены атрибутам других классов.
#theory // Just Python
Дескрипторы — это механизм, который позволяет контролировать доступ к атрибутам классов. Они предоставляют способ определения специальных методов для доступа, присваивания и удаления атрибутов. Дескрипторы часто используются для реализации логики, связанной с доступом к данным, внутри классов.
Для создания дескриптора нужно определить класс, который реализует хотя бы один из трех вышеуказанных методов. Затем экземпляры этого класса могут быть присвоены атрибутам других классов.
#theory // Just Python
Гуглим с помощью Python
Установка необходимых пакетов — pip install beautifulsoup4 и pip install google.
В нашем примере мы задаем в поиске слово "Python" и получаем ссылки на 3 самых популярных по мнению Google сайтов о Python.
#theory // Just Python
Установка необходимых пакетов — pip install beautifulsoup4 и pip install google.
В нашем примере мы задаем в поиске слово "Python" и получаем ссылки на 3 самых популярных по мнению Google сайтов о Python.
#theory // Just Python
getopt
Сам по себе getopt крайне схож по работе с функцией getopt() для анализа параметров командной строки. Модуль полезен при анализе аргументов командной строки, где мы хотим, чтобы пользователь также вводил некоторые параметры. Давайте посмотрим на простой пример, чтобы понять это.
#theory // Just Python
Сам по себе getopt крайне схож по работе с функцией getopt() для анализа параметров командной строки. Модуль полезен при анализе аргументов командной строки, где мы хотим, чтобы пользователь также вводил некоторые параметры. Давайте посмотрим на простой пример, чтобы понять это.
#theory // Just Python
Что такое распаковка кортежа?
Распаковка кортежа — это процесс извлечения отдельных элементов из кортежа и присвоения их переменным. Кортеж представляет собой упорядоченную коллекцию элементов, которые могут быть различных типов. Распаковка позволяет удобно извлекать значения из кортежа и использовать их отдельно.
Распаковка кортежей может быть полезным при работе с функциями, возвращающими несколько значений, а также для обмена значениями переменных без необходимости использовать дополнительные временные переменные.
#theory // Just Python
Распаковка кортежа — это процесс извлечения отдельных элементов из кортежа и присвоения их переменным. Кортеж представляет собой упорядоченную коллекцию элементов, которые могут быть различных типов. Распаковка позволяет удобно извлекать значения из кортежа и использовать их отдельно.
Распаковка кортежей может быть полезным при работе с функциями, возвращающими несколько значений, а также для обмена значениями переменных без необходимости использовать дополнительные временные переменные.
#theory // Just Python