如何在python中使用yield表达式

时间:2013-11-07 19:03:49

标签: python-3.x

我试图在python中使用yield表达式打印数字:0,2,4 ....代码但我一直得到打印:<generator object some_f at 0x000000000252D240>

代码是:

fn= lambda n: 2*n

def Make_iterator(fn):

    def some_f():
        i=0
        yield fn(i)
        i+=1

    return some_f

iterator = Make_iterator(fn)
for i in range(4):
    print(iterator())

1 个答案:

答案 0 :(得分:0)

我认为这更像是你在寻找的东西。

fn = lambda n: 2*n

def Make_iterator(fn):
    def my_iter():
        i=0
        while i<10:
            yield fn(i)
            i+=1
    return my_iter()


for i in Make_iterator():
    print(i)

你不需要额外的函数包装器,你需要确保迭代你的迭代器,而不是只是多次调用它。