生成器 - 打印生成的值

时间:2017-08-10 22:41:21

标签: python generator

有人可以向我解释为什么在“有”和“没有” 循环之间打印我的序列生成有什么不同?

def generation(x):
    i = 0
    while i < x:
        yield i
        i += 1

x = generation(10)
print("Print without for loop: " + str(x))

print("Print with for loop: ")
for j in x:
    print(j)

1 个答案:

答案 0 :(得分:1)

您的第一个print打印生成器对象。你的第二个print调用生成器,迭代生成的值。

这很像打印函数对象(句柄)的值和调用函数之间的区别。

我认为你可能误解了你的第一个print的语义。要获取该表单中的整数列表,您需要迭代生成器的内容:

print("Print as list")
print (list(generation(10)))