Как устроен формат вывода в этом вопросе? - PullRequest
0 голосов
/ 26 июня 2019

Итак, нам дали следующий код. Что я не понимаю, если мы используем генератор, а затем используем это для цикла, почему генератор должен выводить все в одну строку? Разве он не должен печатать в новой строке каждый раз?

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 голосов
/ 26 июня 2019

То, что вы видите, не имеет ничего общего с генераторами и не имеет ничего общего с print.

Посмотрите на документы для функции печати. ​​

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) 

Значение по умолчанию для конца равно \n, что дает ожидаемое поведение строки для каждого оператора печати. Вы задаете ключевое слово end arg в качестве пробела, поэтому вы получаете пробел между результатами последующих вызовов.

Чтобы получить желаемое поведение, просто удалите аргумент end и дайте ему использовать значение по умолчанию.

for num in gen(3):
    print(num)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...