\b возвращает курсор вывода на один символ назад. А поскольку после него был ещё символ (a), то он просто перезаписался.Постараюсь интерактивно показать, | это курсор. Первым делом вывелось a|, потом, за счёт \b, стало так: |a, и в результате получили c|.
Кстати, все такие символы можно тут найти.
Тесты в документации
Такой подход интересен тем, что позволяет другому программисту понять как работает функция в определённых ситуациях, а вам — протестировать её работу.
Реализуется подобная фича с помощью встроенного модуля doctest. Он ищет текста, которые выглядят как интерактивные сеансы Python (>>>, ... и подобные символы).
Вы можете запускать тесты так же, как в примере, а можно с помощью терминала:
Такой подход интересен тем, что позволяет другому программисту понять как работает функция в определённых ситуациях, а вам — протестировать её работу.
Реализуется подобная фича с помощью встроенного модуля doctest. Он ищет текста, которые выглядят как интерактивные сеансы Python (>>>, ... и подобные символы).
Вы можете запускать тесты так же, как в примере, а можно с помощью терминала:
python -m doctest -v example.py.Правила документации
После идёт подробное объяснение. Кто он,
что он делает и какие параметры принимает.
Документировать можно в несколько абзацев.
Писать доки можно для всего: функции, класса, модуля.
можете почитать PEP257,
там разработчики рассказывают, как объяснять код.
class Post:
"""На первой строке краткое описание объекта. После идёт пустая строка (это обязательно).После идёт подробное объяснение. Кто он,
что он делает и какие параметры принимает.
Документировать можно в несколько абзацев.
Писать доки можно для всего: функции, класса, модуля.
можете почитать PEP257,
там разработчики рассказывают, как объяснять код.
"""👍3
Интерпретатор умный
Перед запуском он проходится по файлу и смотрит на первые значения переменных (
Именно поэтому, когда вы выполняете код в интерактивном интерпретаторе и как файл, результат может отличаться.
Перед запуском он проходится по файлу и смотрит на первые значения переменных (
a = "string"), которые потом подставляет на месте повторений (если это неизменяемые типы данных).Именно поэтому, когда вы выполняете код в интерактивном интерпретаторе и как файл, результат может отличаться.
👍1
Упрощаем работу с SQL
Автор FastAPI придумал SQLModel, который упрощает работу с базами данных. Он объединяет в себе Pydantic и SQLAlchemy.
Установка:
Кстати, библиотека хорошо работает с
Автор FastAPI придумал SQLModel, который упрощает работу с базами данных. Он объединяет в себе Pydantic и SQLAlchemy.
Установка:
pip install sqlmodel
Таким образом работу с движком БД мы перекладываем на SQLAlchemy, а обработку данных, проверку и перевод в нужный тип на Pydantic. Кстати, библиотека хорошо работает с
fastapi. Вряд-ли это из-за того, что автор один и тот же.👍1
Перемещение файлов в Python
Для удобной манипуляции с файлами и папками в стандартной библиотеки Python существует специальный модуль
Функция
В случае успеха, функция вернёт новое местоположение файла. Если
Для удобной манипуляции с файлами и папками в стандартной библиотеки Python существует специальный модуль
shutil. Функция
shutil.move(source, destination) позволяет вам переместить любой файл или папку (даже непустую). Обратите внимание, что если destination — это уже существующая папка, то файл/папка будет перемещена внутрь неё, в остальных случаях файл/папка будут скопированы точно по нужному адресу. В случае успеха, функция вернёт новое местоположение файла. Если
destination существует и не является папкой, то будет выброшена ошибка.❤1
Интерфейс командной строки
Самостоятельный парсинг аргументов даже с argparse вызывает трудности. Чтобы их избежать, стоит установить typer.
Установка:
Библиотека сама создаст usage и --help сообщения на основе документации используемых функций или переданных аргументов.
📌 Документация
Самостоятельный парсинг аргументов даже с argparse вызывает трудности. Чтобы их избежать, стоит установить typer.
Установка:
pip install typer
Это — интуинтивно понятный модуль для создания FAST API интерфейсов командой строки. Проще говоря, вы сможете создавать команды по типу git branch -b main.Библиотека сама создаст usage и --help сообщения на основе документации используемых функций или переданных аргументов.
📌 Документация
raise ... from
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
__clause__.Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
Python кэширует все импортированные модули в sys.modules
Это сделано ради оптимизации, чтобы каждый раз не выполнять модуль, а один раз его вытащить и использовать в проекте.
Чтобы его намеренно выполнить снова, воспользуйтесь
Это сделано ради оптимизации, чтобы каждый раз не выполнять модуль, а один раз его вытащить и использовать в проекте.
Чтобы его намеренно выполнить снова, воспользуйтесь
importlib.reload(), но будьте осторожны, ведь это пересоздаст все объекты и создаст ошибки, которые сложно найти.Что такое аннотация типов?
Аннотации типов (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.