ZEN_OF_PYTHON Telegram 4218
В чем сила аннотаций типов

Type Hints — годный инструмент, ибо помогают находить ошибки типов ещё до запуска кода, но настоящая их сила в другом. С ними вы думаете о структуре данных, делая код менее ломким. Появились в Python 3.5 в 2015 году и прижились так хорошо. что даже IDE напоминают вам о них ворнингами.

Взгляните на функцию, что вычисляет скидку для списка товаров:


def calculate_discount(items, discount):
return [item * (1 - discount) for item in items]


Всё работает, но не совсем понятно:

— Что именно items? Список? Кортеж? Генератор?
— Какой тип у discount?
— Что возвращает функция?

Код «самопроясняется», если добавить typing.List:


from typing import List

def calculate_discount(items: List[float], discount: float) -> List[float]:
return [item * (1 - discount) for item in items]


Мы можем пойти дальше. Зачем ограничивать функцию только List[float], если она также могла бы принять кортеж, множество или генератор?


from collections.abc import Iterable

def calculate_discount(items: Iterable[float], discount: float) -> List[float]:
return [item * (1 - discount) for item in items]


Теперь items — любая итерируемая структура: список, кортеж, генератор. Такой подход делает функцию более универсальной.

Это и есть главное преимущество Type Hints: они заставляют задуматься — а не слишком ли жёсткие ограничения я накладываю на входные данные? А не стоит ли сделать интерфейс функции более абстрактным?

Допустим, вы проектируете класс заказа. Если сначала использовали List для хранения товаров, то подумав о типах, вы можете заменить это на Set, чтобы избежать повторений. Или вместо хранения всех элементов в памяти начать использовать генератор для ленивой загрузки данных из базы.

Аннотации типов подталкивают вас к обобщённому проектированию, где функции и классы не зависят от конкретных реализаций.

Входы — как можно шире, выходы — как можно конкретнее.


#основы
@zen_of_python
👍1



tgoop.com/zen_of_python/4218
Create:
Last Update:

В чем сила аннотаций типов

Type Hints — годный инструмент, ибо помогают находить ошибки типов ещё до запуска кода, но настоящая их сила в другом. С ними вы думаете о структуре данных, делая код менее ломким. Появились в Python 3.5 в 2015 году и прижились так хорошо. что даже IDE напоминают вам о них ворнингами.

Взгляните на функцию, что вычисляет скидку для списка товаров:


def calculate_discount(items, discount):
return [item * (1 - discount) for item in items]


Всё работает, но не совсем понятно:

— Что именно items? Список? Кортеж? Генератор?
— Какой тип у discount?
— Что возвращает функция?

Код «самопроясняется», если добавить typing.List:


from typing import List

def calculate_discount(items: List[float], discount: float) -> List[float]:
return [item * (1 - discount) for item in items]


Мы можем пойти дальше. Зачем ограничивать функцию только List[float], если она также могла бы принять кортеж, множество или генератор?


from collections.abc import Iterable

def calculate_discount(items: Iterable[float], discount: float) -> List[float]:
return [item * (1 - discount) for item in items]


Теперь items — любая итерируемая структура: список, кортеж, генератор. Такой подход делает функцию более универсальной.

Это и есть главное преимущество Type Hints: они заставляют задуматься — а не слишком ли жёсткие ограничения я накладываю на входные данные? А не стоит ли сделать интерфейс функции более абстрактным?

Допустим, вы проектируете класс заказа. Если сначала использовали List для хранения товаров, то подумав о типах, вы можете заменить это на Set, чтобы избежать повторений. Или вместо хранения всех элементов в памяти начать использовать генератор для ленивой загрузки данных из базы.

Аннотации типов подталкивают вас к обобщённому проектированию, где функции и классы не зависят от конкретных реализаций.

Входы — как можно шире, выходы — как можно конкретнее.


#основы
@zen_of_python

BY Zen of Python




Share with your friend now:
tgoop.com/zen_of_python/4218

View MORE
Open in Telegram


Telegram News

Date: |

Telegram channels fall into two types: How to Create a Private or Public Channel on Telegram? How to Create a Private or Public Channel on Telegram? Telegram users themselves will be able to flag and report potentially false content. Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them.
from us


Telegram Zen of Python
FROM American