Пишем чистый код на Python 🚀
Друзья, мы продолжаем с вами говорить про написание чистого, понятного кода. Поэтому сегодня обсудим очень известный модуль, который может в этом помочь.
Python typing module
Обычно его импортируют так:
import typing as tp
⚠️ С помощью модуля typing вы можете явно указывать типы значений, с которыми работаете в программе, например, переменные каких типов ожидаются на вход и выход функций. Это обязательно нужно делать, во-первых, чтобы помочь программам проверки статических типов и линтерам точно предсказывать ошибки, а во-вторых, вы упростите жизнь себе и своим коллегам в будущем, так как чтение кода будет происходить быстрее, ведь типы данных будут определены и прописаны.
Давайте рассмотрим примеры и убедимся, что с использованием модуля typing код будет выглядеть более читабельным.
✅ Например, вы хотите задать переменную, где будут храниться данные из конфигурационного файла. Вы знаете, что конфигурационный файл - это словарь, где ключ и значение строкового типа. Явно это укажем.
config: tp.Dict[str, str]
✅ Также нужно явно прописывать тайпинги, если вы описываете атрибуты класса. Помним, что атрибуты класса могут быть любые. Давайте посмотрим пример, где одним из атрибутов класса является параметр trained_models - список, внутри которого лежат обученные модели типа ModelBase.
class FittedData(): users: pd.DataFrame trained_models: tp.List[ModelBase]
✅ А теперь давайте представим, что в списке trained_models могут лежат не только модели типа ModelBase. Такой вариант модуль typing тоже поможет описать. Пусть мы знаем, что в trained_models хранятся модели разного типа. trained_models:
tp.List[tp.Union[ModelFirst, ModelSecond]]
📌 Здесь используемся тип аннотации Union[] модуля typing. Такой тип представляет собой тип объединения - эквивалентно ModelFirst | ModelSecond, который означает либо ModelFirst, либо ModelSecond.
Друзья, мы продолжаем с вами говорить про написание чистого, понятного кода. Поэтому сегодня обсудим очень известный модуль, который может в этом помочь.
Python typing module
Обычно его импортируют так:
import typing as tp
⚠️ С помощью модуля typing вы можете явно указывать типы значений, с которыми работаете в программе, например, переменные каких типов ожидаются на вход и выход функций. Это обязательно нужно делать, во-первых, чтобы помочь программам проверки статических типов и линтерам точно предсказывать ошибки, а во-вторых, вы упростите жизнь себе и своим коллегам в будущем, так как чтение кода будет происходить быстрее, ведь типы данных будут определены и прописаны.
Давайте рассмотрим примеры и убедимся, что с использованием модуля typing код будет выглядеть более читабельным.
✅ Например, вы хотите задать переменную, где будут храниться данные из конфигурационного файла. Вы знаете, что конфигурационный файл - это словарь, где ключ и значение строкового типа. Явно это укажем.
config: tp.Dict[str, str]
✅ Также нужно явно прописывать тайпинги, если вы описываете атрибуты класса. Помним, что атрибуты класса могут быть любые. Давайте посмотрим пример, где одним из атрибутов класса является параметр trained_models - список, внутри которого лежат обученные модели типа ModelBase.
class FittedData(): users: pd.DataFrame trained_models: tp.List[ModelBase]
✅ А теперь давайте представим, что в списке trained_models могут лежат не только модели типа ModelBase. Такой вариант модуль typing тоже поможет описать. Пусть мы знаем, что в trained_models хранятся модели разного типа. trained_models:
tp.List[tp.Union[ModelFirst, ModelSecond]]
📌 Здесь используемся тип аннотации Union[] модуля typing. Такой тип представляет собой тип объединения - эквивалентно ModelFirst | ModelSecond, который означает либо ModelFirst, либо ModelSecond.