有人可以向我解释为什么在“有”和“没有” 循环之间打印我的序列生成有什么不同?
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)
答案 0 :(得分:1)
您的第一个print
打印生成器对象。你的第二个print
调用生成器,迭代生成的值。
这很像打印函数对象(句柄)的值和调用函数之间的区别。
我认为你可能误解了你的第一个print
的语义。要获取该表单中的整数列表,您需要迭代生成器的内容:
print("Print as list")
print (list(generation(10)))