Код: Выделить всё
def do_something(even_callback, odd_callback):
for i in range(10):
if i % 2:
even_callback(i)
else:
odd_callback(i)
Код: Выделить всё
do_something(print, print)
Код: Выделить всё
for result in do_something_generator():
print(result)
Судя по обсуждениям в комментариях, одним из возможных решений было бы переписать do_something в качестве генератора, а затем обернуть ее для получения версии обратного вызова, однако для этого потребуется пометить события как «четные» или «нечетные», чтобы их можно было отличить в реализации обратного вызова.
В моем конкретном случае это неосуществимо из-за частых событий с порциями данных — добавление тегов в базовую реализацию — это нетривиальные накладные расходы по сравнению с обратными вызовами.>
Подробнее здесь: https://stackoverflow.com/questions/738 ... -generator