Sobes.tech
Junior — Middle
102

Hogyan lehet megkapni az értéket, amit a send() módszerrel küldtek a Python generátorba?

Cégeket kérdeztek
Т-БанкТ-Банк

Válasz az MI-től

sobes.tech MI

В Python значение, отправленное в генератор с помощью метода send(), становится результатом выражения yield внутри генератора. То есть, когда генератор приостанавливается на yield, вызов send(value) возобновляет выполнение генератора, и выражение yield возвращает переданное значение value.

Пример:

def gen():
    received = yield "start"
    print(f"Получено: {received}")
    received2 = yield "middle"
    print(f"Получено второе: {received2}")

g = gen()
print(next(g))          # Запускает генератор, выводит 'start'
print(g.send(10))       # Отправляет 10, выводит 'middle' и печатает 'Получено: 10'
print(g.send(20))       # Отправляет 20, генератор печатает 'Получено второе: 20'

Таким образом, значение, переданное в send(), становится результатом текущего выражения yield внутри генератора.