["python","python-3.x"]
What does "SyntaxError: Missing parentheses in call to 'print'" mean in Python?

When I try to use a print statement in Python, it gives me this error: >>> print "Hello, World!" File "<stdin>", line 1 print "Hello, World!" ^ SyntaxError: Missing parentheses in call to 'print' What does that mean? See Getting SyntaxError for print with keyword argument end=' ' for the opposite problem. See Python 3 print without parenthesis for workarounds, and confirmation that print cannot be made to work like a statement in Python 3.
The error message SyntaxError: Missing parentheses in call to 'print' occurs when you attempt to use Python 3 syntax with the Python 2 print statement. Example: print "Hello, World!" In Python 3, the print statement was replaced with a print() function, requiring parentheses around the value to be printed. Solution print("Hello, World!") In Python 3, the print statement was replaced with a print() function, requiring parentheses around the value to be printed. >>> print("Hello, World!") Hello, World! In earlier versions of Python 3, the interpreter just reports a generic syntax error, without providing any useful hints as to what might be going wrong: >>> print "Hello, World!" File "<stdin>", line 1 print "Hello, World!" ^ SyntaxError: invalid syntax As for why print became an ordinary function in Python 3, that didn't relate to the basic form of the statement, but rather to how you did more complicated things like printing multiple items to stderr with a trailing space rather than ending the line. In Python 2: >>> import sys >>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6 1 2 3 4 5 6 In Python 3: >>> import sys >>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr) 1 2 3 4 5 6 Starting with the Python 3.6.3 release in September 2017, some error messages related to the Python 2.x print syntax have been updated to recommend their Python 3.x counterparts: >>> print "Hello!" File "<stdin>", line 1 print "Hello!" ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")? Since the "Missing parentheses in call to print" case is a compile time syntax error and hence has access to the raw source code, it's able to include the full text on the rest of the line in the suggested replacement. However, it doesn't currently try to work out the appropriate quotes to place around that expression (that's not impossible, just sufficiently complicated that it hasn't been done). The TypeError raised for the right shift operator has also been customised: >>> print >> sys.stderr Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"? Since this error is raised when the code runs, rather than when it is compiled, it doesn't have access to the raw source code, and hence uses meta-variables (<message> and <output_stream>) in the suggested replacement expression instead of whatever the user actually typed. Unlike the syntax error case, it's straightforward to place quotes around the Python expression in the custom right shift error message.