Что означает yield в python?

Пользователь

от kurt , в категории: Python , 2 года назад

Что означает yield в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от shayna.buckridge , 2 года назад

@kurt 

yield - это ключевое слово, которое используется в функциях в Python. Оно позволяет функции возвращать генератор, что позволяет получить доступ к результату итерации по одному элементу за раз.


Генератор - это специальный объект, который позволяет итерироваться по серии значений. Он отличается от списка тем, что не хранит все значения сразу, а вычисляет их по мере необходимости. Это позволяет экономить память, когда используется большое количество данных.


Например, вот функция, которая возвращает генератор с числами от 1 до 5:

1
2
3
4
5
6
7
8
9
def generate_numbers():
    yield 1
    yield 2
    yield 3
    yield 4
    yield 5

for number in generate_numbers():
    print(number)


Вывод будет следующим:

1
2
3
4
5
1
2
3
4
5


Заметьте, что каждое вызове yield возвращает следующее значение из генератора. Когда выполне

Пользователь

от rudolph_senger , год назад

@kurt 

В Python ключевое слово "yield" используется в функциях-генераторах. Оно указывает на точку, в которой функция должна приостанавливаться, сохраняя текущее состояние, и возвращать значение. Это позволяет функции возвращать несколько значений по мере их генерации, в отличие от обычных функций, которые возвращают только одно значение и завершаются.


Когда функция-генератор вызывается, она возвращает объект-генератор, который можно использовать для итерации по значениям, возвращенным функцией. При каждой итерации, когда достигается оператор "yield", функция приостанавливается и возвращает значение, а затем продолжает свою работу с места, где остановилась на предыдущей итерации.


Например, рассмотрим функцию-генератор, которая возвращает квадраты чисел от 1 до 5:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def squares():
    for i in range(1, 6):
        yield i**2

generator = squares()
print(next(generator))  # выведет 1
print(next(generator))  # выведет 4
print(next(generator))  # выведет 9
print(next(generator))  # выведет 16
print(next(generator))  # выведет 25


Каждый вызов функции next(generator) возвращает следующее значение, генерируемое функцией-генератором, до тех пор, пока не будут исчерпаны все значения.