Handling SyntaxError with Print and End Keyword Argument
When attempting to execute the following code:
if Verbose: print("Building internal Index for %d tile(s) ...", end=' ')
an error occurs: "SyntaxError: Missing parentheses in call to 'print'". This is because the keyword argument end is not supported in Python 2.x.
Understanding the Difference
In Python 2.x, print functions as a statement. Hence, the above code is interpreted as a tuple-wrapped call to print, with the final argument being a string literal. However, string literals do not support keyword arguments, leading to the error.
Solution for Python 2.x
In Python 2.x, employ one of the following methods to end a line with a space:
Add a final comma to the print statement:
print "Building internal Index for %d tile(s) ...",
Use the sys.stdout module directly for greater control over output:
import sys sys.stdout.write("Building internal Index for %d tile(s) ... ")
Enabling End Keyword Argument in Python 2.x
In recent versions of Python 2.x (2.5 and later), the __future__ module allows for the activation of the print function as a function by importing print_function. However, this method may not be compatible with older Python 2.x versions.
Transition to Python 3.x
In Python 3.x, print behaves as a function, enabling the use of keyword arguments such as end. Therefore, the original code should execute correctly in Python 3.x without any modifications.
The above is the detailed content of Why Does Python 2.x Throw a 'SyntaxError: Missing parentheses in call to 'print'' When Using the 'end' Keyword Argument?. For more information, please follow other related articles on the PHP Chinese website!