Встречается на собеседованиях • сегодня

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

PECS (Producer Extends, Consumer Super) — это мнемоническое правило в Java для работы с дженериками и вайлдкардами (? extends T и ? super T). В Python аналогов нет, но принцип можно объяснить на примере типизации:

  1. Producer Extends (поставщик расширяет) — если структура данных только "производит" элементы (например, итерируется), используйте Iterable[+T] (ковариантность). Пример:
python
from typing import Iterable

def process_numbers(nums: Iterable[float]) -> float:
return sum(nums) # только читаем, ковариантно

text

2. **Consumer Super** (потребитель принимает) — если структура только "потребляет" (например, добавляет элементы), используйте `List[-T]` (контравариантность). Пример:
```python
from typing import List

def fill_with_defaults(lst: List[object]) -> None:
    lst.append(42)  # только записываем, контравариантно

В Python это менее явно из-за duck typing, но актуально при строгой типизации (mypy, pyright).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы