Как увеличить объект генератора для выполнения кода после yield в функции генератора? - PullRequest
0 голосов
/ 12 июля 2019

У меня есть функция генератора, которая имеет некоторый код перед yield и некоторый код после yield.Есть ли способ перейти к выполнению кода после yield, не выполняя код до yield?

Я пытался исследовать функции itertools, но пока безуспешно.

def func1():
    print("Code before yield is executing")
    yield 
    print("Code after yield is executing")

Здесь я пытаюсь написать собственный генератор, который будет выполнять деталь после yield и stop.

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Один из способов - вручную потреблять генератор:

gen = func1()
next(gen)
for x in gen:
   # do something with x here

Вызов next() выполнит первый элемент генератора и проигнорирует его. Тогда цикл for потребляет остальную часть генератора. Обратите внимание, что это предполагает отсутствие побочных эффектов при использовании первого элемента или что побочные эффекты все еще желательны.

0 голосов
/ 12 июля 2019

что-то вроде:

def func1(exec = True):
    if exec:
        print("Code before yield is executing")
        yield 
    print("Code after yield is executing")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...