Из документов: https://docs.python.org/3/library/functions.html#print
print (* objects, sep = '', end = '\ n', file = sys.stdout, flush = False)
Печать объектов в файл текстового потока, разделенных sep и последующим end.sep, end, file и flush, если они есть, должны быть заданы в качестве аргументов ключевых слов.
В первом случае печать нескольких строк, разделенных запятой в print
, добавляет явный пробел ' '
между ними, что происходит из-за аргумента печати по умолчанию sep=' '
, который разделяет несколько печатаемых элементов с помощью пробела
In [124]: print('hello','world')
hello world
Во втором случае, установка end = ''
гарантирует, что строка не будет завершенапо новой строке \n
(согласно аргументу по умолчанию end='\n'
), но по пустому символу
In [130]: print('hello',end='')
...: print('world',end='')
helloworld
Выполнение вашего примера в вопросе дает нам
##### #####
differs from:
##### #####
Гдевы видите дополнительный пробел ' '
, добавленный в первую строку, но не во вторую строку, и вторая строка не заканчивается новой строкой, а пустым символом