Превратить функции с обратным вызовом в генераторы Python?

Функция минимизации Scipy (просто для примера) имеет возможность добавления функции обратного вызова на каждом шаге. Поэтому я могу сделать что-то вроде

def my_callback(x):
    print x
scipy.optimize.fmin(func, x0, callback=my_callback)

Есть ли способ использовать функцию обратного вызова для создания версии генератора fmin, чтобы я мог сделать,

for x in my_fmin(func,x0):
    print x

Кажется, что это возможно с некоторой комбинацией yield и send, но я вполне могу придумать что угодно

30
задан Eric O Lebigot 1 April 2012 в 22:53
поделиться