yield — это «сводный брат» return. Каждый раз, когда в коде для генератора встречается этот оператор, выполнение приостанавливается, и значение, указанное после yield, возвращается генератору. Затем выполнение возобновляется с того же места и продолжается до встречи следующего yield.
Для примера, посмотрим на простой генератор, который возвращает числа от 1 до 10:
def infinite_sequence(): num = 0 while True: yield num num += 1Этот код создает функцию-генератор infinite_sequence(), которая возвращает числа. Каждый раз, когда выполняется оператор yield, значение i возвращается генератору как текущее, и выполняется приостановка до следующей итерации.
Вызвав эту функцию, мы получим:
for i in infinite_sequence(): print(i, end=" ")>>> 0 1 2 3 4 5 6 И так, пока не остановим выполнение кода.
Yield очень полезен при работе с большими объемами данных, когда недостаточно памяти для загрузки всего набора данных в память. Генератор сможет вернуть список значений по одному, не занимая много памяти.
#лучшиепрактики