Отсутствие аннотаций типов — это неуважение к себе и к другим, кто использует ваши пайплайны. Код, который вы пишете, не только для выполнения, но и для коммуникации.
В инженерии данных аннотации типов служат контрактом между шагами пайплайна, чётко определяя, какой тип данных функция ожидает и какой тип данных она вернёт. Это делает пайплайны более предсказуемыми и проще для отладки, так как каждая функция заранее сообщает свои требования.
Это выглядит нормально, но...
def enrich_user_names(df, user_lookup=None):
pass
Это не говорит, что такое
df, какого типа user_lookup, или что функция должна вернуть. Теперь представьте, что это часть производственного пайплайна с 10+ участниками. Такая неопределённость становится багом.Вот так будет лучше:
def enrich_user_names(
df: pd.DataFrame,
user_lookup: Optional[Dict[int, str]] = None
) -> pd.DataFrame:
pass
Чёткая коммуникация с самого начала. Каждый, кто увидит эту функцию, точно будет знать, что ожидать. Вот что значит чёткая коммуникация. Аннотации типов — в помощь
👉 @PythonPortal
