如何使用python生成器

2024-04-26 18:46:01 发布

您现在位置:Python中文网/ 问答频道 /正文

今天我在学习生成器,迭代器等等来节省内存,我认为与其把列表转储到内存中,不如在需要时对它们进行评估,所以我做了一个简单的测试,就像下面的生成器一样。你知道吗

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
.
.

有人能详细解释一下发生了什么事吗


Tags: 函数内存intest列表fordefargs
1条回答
网友
1楼 · 发布于 2024-04-26 18:46:01

在函数定义中使用*需要调用方为函数提供单独的参数。考虑删除它并直接使用args。你知道吗

相关问题 更多 >