Sobes.tech
Middle+

Wie kann ein Generator einen Wert von außen über send() erhalten? Schreiben Sie ein Beispiel für einen Generator, der das Wort 'stop' akzeptiert und stoppt.

sobes.tech KI

Antwort von AI

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

Пример генератора, который принимает слово 'stop' и останавливается:

def stop_generator():
    while True:
        word = yield
        if word == 'stop':
            print('Остановка генератора')
            break
        else:
            print(f'Получено слово: {word}')

# Использование
g = stop_generator()
next(g)  # Запуск генератора до первого yield

g.send('hello')  # Выведет: Получено слово: hello
g.send('world')  # Выведет: Получено слово: world
g.send('stop')   # Выведет: Остановка генератора

Обратите внимание, что перед первым вызовом send() нужно запустить генератор до первого yield с помощью next().