Возврат значения из цикла без его завершения

Подскажите можно ли как то возвращая элемент из цикла его на этом не прекращать а продолжать выполнение? Пишу асинхронную программу, нужно вернуть element из функции и продолжить её выполнять, пробовал в очередь его класть, но она до конца работы не доступна так же(через queue.put(element))


def my_fun()
    for element in elements:
        return element

my_fun()

Ответы (1 шт):

Автор решения: insolor

Пример через yield:

def my_fun():
    for element in range(5):
        print(f"Создаем элемент {element}")
        yield element


for item in my_fun():
    print(f"Принимаем элемент {item}")

Вывод:

Создаем элемент 0
Принимаем элемент 0
Создаем элемент 1
Принимаем элемент 1
Создаем элемент 2
Принимаем элемент 2
Создаем элемент 3
Принимаем элемент 3
Создаем элемент 4
Принимаем элемент 4
→ Ссылка