Вы уверены, что используете Python 3.x? Синтаксис недоступен в Python 2.x, потому что print
все еще является оператором.
print("foo" % bar, end=" ")
в Python 2.x идентичен
print ("foo" % bar, end=" ")
или
print "foo" % bar, end=" "
т.е.. как вызов для печати с кортежем в качестве аргумента.
Это явно плохой синтаксис (литералы не принимают аргументы ключевых слов). В Python 3.x print
является реальной функцией, поэтому она также принимает аргументы с ключевыми словами.
Правильная идиома в Python 2.x для end=" "
:
print "foo" % bar,
(обратите внимание на последнюю запятую, в результате строка заканчивается пробелом, а не переводом строки)
Если вы хотите больше контроля над выходом, рассмотрите возможность использования sys.stdout
напрямую. Это не будет делать никакой особой магии с выводом.
Конечно, в некоторых последних версиях Python 2.x (он должен быть в 2.5, но не обязательно в 2.4), вы можете использовать модуль __future__
, чтобы включить его в файле сценария:
from __future__ import print_function
То же самое касается unicode_literals
и некоторых других приятных вещей (например, with_statement
). Это не будет работать в действительно старых версиях (то есть созданных до появления этой возможности) Python 2.x, однако.