如何使用python生成器

时间:2013-05-29 11:49:49

标签: python python-2.7 generator

今天我学习生成器迭代器等等以节省内存为目的,我认为更好的是将列表转储到内存中,最好让它们在需要时进行评估,这样我就可以像下面的生成器一样进行简单的测试。

def test(*args):
    for i in args:
        yield i

当我像下面那样使用它时会产生预期的效果。

for i in test(range(10)):
    print i

输出如此

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

但是这个范围会将所有数字转储到功能中,这会破坏目的,所以我尝试了xrange,如下所示

for i in test(xrange(10)):
    print i

我得到了一个相当令人惊讶的输出

xrange(10)

但是从另一个方面看,因为xrange只会在迭代时进行评估,所以我会尝试强制它这样做

for i in ye(*xrange(10)):
    print i

然后我得到了这样的输出

o
1
.
.

有人可以解释详细情况吗

1 个答案:

答案 0 :(得分:1)

在函数定义中使用*需要调用者为函数提供单独的参数。请考虑将其删除并直接使用args