这个问题的输出格式如何安排?

时间:2019-06-25 22:56:13

标签: python generator

因此,我们得到了以下代码。我不明白的是,如果我们使用一个生成器,然后将其用于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=" ")

1 个答案:

答案 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)