Что означают принципы PECS

Python Senior Без компании
Что означают принципы PECS
Ответы
PECS (Producer Extends, Consumer Super) — это мнемоническое правило в Java для работы с дженериками и вайлдкардами (`? extends T` и `? super T`). В Python аналогов нет, но принцип можно объяснить на примере типизации: - **Producer Extends** (поставщик расширяет) — если структура данных только "производит" элементы (например, итерируется), используйте `Iterable[+T]` (ковариантность). Пример: ``` from typing import Iterable def process_numbers(nums: Iterable[float]) -> float: return sum(nums) # только читаем, ковариантно ``` - **Consumer Super** (потребитель принимает) — если структура только "потребляет" (например, добавляет элементы), используйте `List[-T]` (контравариантность). Пример: ``` from typing import List def fill_with_defaults(lst: List[object]) -> None: lst.append(42) # только записываем, контравариантно ``` В Python это менее явно из-за duck typing, но актуально при строгой типизации (mypy, pyright).