То, что вы видите, не имеет ничего общего с генераторами и не имеет ничего общего с print
.
Посмотрите на документы для функции печати.
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
Значение по умолчанию для конца равно \n
, что дает ожидаемое поведение строки для каждого оператора печати. Вы задаете ключевое слово end
arg в качестве пробела, поэтому вы получаете пробел между результатами последующих вызовов.
Чтобы получить желаемое поведение, просто удалите аргумент end
и дайте ему использовать значение по умолчанию.
for num in gen(3):
print(num)