Just Python
Closed channel
🐍Простое изучение Python. Ссылка: @Portal_v_IT Сотрудничество: @oleginc
Show more9 696
Subscribers
-624 hours
-217 days
-7630 days
Posts Archive
9 696
Что такое аннотация типов?
Аннотации типов (type hints) позволяют указать ожидаемые типы аргументов функций и возвращаемых значений. Они были введены в Python 3.5.
Аннотации типов не проверяются во время выполнения кода. Это просто подсказки для разработчиков и инструментов статического анализа кода.
Поддерживаются встроенные типы (int, float, str, bool и т.д.), а также классы, списки, словари и кортежи с указанием типов внутри.
Для необязательных аргументов используется Optional[] (например, Optional[int]).
Для возвращения нескольких типов можно использовать Union (например, Union[int, str]).
#theory // Just Python
9 696
ParamSpec
Это специальный тип для спецификации параметров.
Он часто используется с декораторами, когда мы не знаем какие параметры будет получать декорируемая функция и не можем заранее их задать.
Так мы можем получать подсказки по декорируемой функции, которых бы не было без ParamSpec.
Добавлено в Python 3.10.
#theory // Just Python
9 696
Python кэширует все импортированные модули в sys.modules
Это сделано ради оптимизации, чтобы каждый раз не выполнять модуль, а один раз его вытащить и использовать в проекте.
Чтобы его намеренно выполнить снова, воспользуйтесь
importlib.reload(), но будьте осторожны, ведь это пересоздаст все объекты и создаст ошибки, которые сложно найти.
#theory // Just Python9 696
Модуль временных зон
В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.
Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.
#modules // Just Python
9 696
Оператор преобразования raise ... from
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
__clause__.
Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
#theory // Just Python9 696
9 696
+1
tomllib
Это новая встроенная в Python библиотека для работы с TOML конфигурационными файлами.
#theory // Just Python
9 696
⚡️Вслед за Youtube хотят заблокировать и Google. И это последний шаг к Чебурнету — дальше только как в Северной Корее.
Изоляция ждёт всех, кто не заботится о своей свободе и кибербезопасности. Чтобы такого не было с вами, читайте канал «Провод».
Там сотрудник Касперского рассказывает, как обойти любые блокировки без VPN, отключить любую слежку с Windows, Android и IOS и бесплатно повысить скорость интернета в 3 раза.
Сейчас такие навыки жизненно необходимы — подписывайтесь: @provod
9 696
Zoneinfo
В PEP-615 (принятый в Python 3.9) появился новый модуль zoneinfo, который упрощает работу с временными зонами. Он обращается к ОС за информацией, если не получается, просит установить tzdata.
Раньше эту функцию выполнял сторонний пакет pytz, теперь им не стоит пользоваться.
#theory // Just Python
9 696
Программист — лекарство от больных тимлидов, тупых багов и тех самых митов в 10 утра ☠️
Здесь собирают лучшие мемы про айтишников, чтобы спасти вашу психику от died'осов на работе.
Идеально зачиллить вечерком и скинуть друзьям: @progeri
9 696
raise ... from
Оператор может быть полезен при преобразовании исключений из одного типа в другой.
Также мы можем строить цепочку исключений, привязываю каждую новую ошибку к
__clause__.
Подробнее о том, где используется raise from и в чём отличие от простого raise вы можете найти тут.
#theory // Just Python9 696
+1
tomllib
Это новая встроенная в Python библиотека для работы с TOML конфигурационными файлами.
#теория
9 696
VSCode в браузере
Если у вас слабый пк или просто лень скачивать IDE на свой пк, то можете запустить его в браузере.
Он поддерживает почти все функции десктопного редактора, так ещё может подключаться к git репозиторию и править там (если есть доступ).
Единственный недостаток — расширения. Они доступны, но с серьёзными ограничениями. Python работает, уже хорошо.
Ссылка на сайт
#tools // Just Python
9 696
Интерфейс командной строки
Самостоятельный парсинг аргументов даже с argparse вызывает трудности. Чтобы их избежать, стоит установить typer.
Установка:
pip install typer
Это — интуинтивно понятный модуль для создания FAST API интерфейсов командой строки. Проще говоря, вы сможете создавать команды по типу git branch -b main.
Библиотека сама создаст usage и --help сообщения на основе документации используемых функций или переданных аргументов.
📌 Документация
#theory // Just Python9 696
Я знаю что так будет, но почему?
Во первых вспоминаем, что значения по умолчанию генерируются только один раз и хранятся в
func.__defaults__.
Во вторых, вспоминаем про булевые операции, что они могут возвращать не только True/False, а и сами значения.
#theory // Just Python9 696
Перемещение файлов в Python
Для удобной манипуляции с файлами и папками в стандартной библиотеки Python существует специальный модуль
shutil.
Функция shutil.move(source, destination) позволяет вам переместить любой файл или папку (даже непустую). Обратите внимание, что если destination — это уже существующая папка, то файл/папка будет перемещена внутрь неё, в остальных случаях файл/папка будут скопированы точно по нужному адресу.
В случае успеха, функция вернёт новое местоположение файла. Если destination существует и не является папкой, то будет выброшена ошибка.
#theory // Just Python9 696
Папочка Дотнета — канал от разработчика с опытом более 6 лет. Совладелец успешного (Не очень) стартапа, действующий тимлид и интервьюер
😭 Только авторские посты
💃 Как стать синьором без олимпиад, алгоритмов и хорошего высшего образования
🥣 Рассказываю как эффективно проходить собеседования
⚡️ Подпишись, чтобы не потерять — Папочка Дотнета
9 696
📌 Знаете, как работает словарь?
Лучше не знать. Начнём с того, что он принимает только хешируемые объекты, то есть те, у которых есть метод
__hash__. Это str, tuple, frozenset и другие неизменяемые объекты.
После их запихивают в хеш-таблицу (есть на эту тему классная статья). Если просто, то это «гардеробная». Вы даёте номерок и вам выдают вещь.
#урок9 696
Упрощаем работу с SQL
Автор FastAPI придумал SQLModel, который упрощает работу с базами данных. Он объединяет в себе Pydantic и SQLAlchemy.
Установка:
pip install sqlmodel
Таким образом работу с движком БД мы перекладываем на SQLAlchemy, а обработку данных, проверку и перевод в нужный тип на Pydantic.
Кстати, библиотека хорошо работает с fastapi. Вряд-ли это из-за того, что автор один и тот же.
Документация
#theory // Just Python9 696
Ещё не надоело работать с os.path?
С Python 3.4 есть отличная альтернатива — pathlib. Он упрощает работу с путями и добавляет новые функции.
Помимо того, что вы теперь можете удобно составлять пути, так ещё и работать с ними (
rename(), rmdir(), etc).
К тому же пути нормально работают на Windows и Linux. А если ваш код всё ещё использует os, то pathlib совместим с этим модулем.
#theory // Just Python