Getting SyntaxError for print with keyword argument end=' '
How about this:
#Only for use in Python 2.6.0a2 and later
from __future__ import print_function
This allows you to use the Python 3.0 style print
function without having to hand-edit all occurrences of print
:)
Are you sure you are using Python 3.x? The syntax isn't available in Python 2.x because print
is still a statement.
print("foo" % bar, end=" ")
in Python 2.x is identical to
print ("foo" % bar, end=" ")
or
print "foo" % bar, end=" "
i.e. as a call to print with a tuple as argument.
That's obviously bad syntax (literals don't take keyword arguments). In Python 3.x print
is an actual function, so it takes keyword arguments, too.
The correct idiom in Python 2.x for end=" "
is:
print "foo" % bar,
(note the final comma, this makes it end the line with a space rather than a linebreak)
If you want more control over the output, consider using sys.stdout
directly. This won't do any special magic with the output.
Of course in somewhat recent versions of Python 2.x (2.5 should have it, not sure about 2.4), you can use the __future__
module to enable it in your script file:
from __future__ import print_function
The same goes with unicode_literals
and some other nice things (with_statement
, for example). This won't work in really old versions (i.e. created before the feature was introduced) of Python 2.x, though.