Ответ
yield — это ключевое слово в Python, используемое для создания генераторов. Функция, содержащая yield, возвращает специальный итератор — генератор, который выдаёт значения по одному, приостанавливая своё выполнение после каждого yield и сохраняя локальное состояние для последующего возобновления.
Пример простого генератора:
def countdown(n):
print("Starting countdown from", n)
while n > 0:
yield n # Возвращает значение и приостанавливается
n -= 1
print("Done!")
# Использование
for i in countdown(5):
print(i)
# Вывод: 5, 4, 3, 2, 1
Ключевые преимущества:
- Ленивые вычисления: Значения генерируются "на лету", а не хранятся в памяти целиком, что эффективно для работы с большими или бесконечными последовательностями.
- Сохранение состояния: Функция-генератор "помнит" своё место между вызовами.
Практическое применение в тестировании: Генераторы полезны для:
-
Создания тестовых данных: Генерация большого потока данных для нагрузочного или стресс-тестирования без потребления всей оперативной памяти.
def generate_test_ids(start): id = start while True: yield f"user_{id}" id += 1 id_gen = generate_test_ids(1000) test_user_ids = [next(id_gen) for _ in range(10000)] # 10k ID - Имитации потокового ввода/вывода в интеграционных тестах.
- Реализации кастомных итераторов для объектов сложной структуры, которые необходимо последовательно проверять в тестах.