因此,我们得到了以下代码。我不明白的是,如果我们使用一个生成器,然后将其用于for循环,为什么生成器应该在一行中输出所有内容?它不应该每次都换行吗?
def gen(n):
curr=0
sumval=0
while curr<n:
curr=curr+1
sumval+=curr
yield curr
yield sumval
for num in gen(3):
print(num, end=" ")
答案 0 :(得分:0)
您看到的与生成器无关,与print
无关。
查看docs上的打印功能。
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
end的默认值为\n
,它给出了每个print语句一行的预期行为。您将end
关键字arg指定为空格,因此在后续调用的输出之间将获得一个空格。
要获得所需的行为,只需删除end
参数并使其使用默认值即可。
for num in gen(3):
print(num)