Using print() (the function version) in Python2.x

function-call, printing, python, python-2.x

Solution

Consider the following expressions:

a = ("Hello SO!")
a = "Hello SO!"

They're equivalent. In the same way, with a statement:

statement_keyword("foo")
statement_keyword "foo"

are also equivalent.

Notice that if you change your print function to:

print("Hello","SO!")

You'll notice a difference between python 2 and python 3. With python 2, the `(...,...)` is interpteted as a tuple since print is a statement whereas in python 3, it's a function call with multiple arguments.

Therefore, to answer the question at hand, `print` is evaluated as a statement in python 2.x unless you `from __future__ import print_function` (introduced in python 2.6)

Problem

I understand the difference between a statement and an expression, and I understand that Python3 turned print() into a function. However I ran a print() statement surrounded with parenthesis on various Python2.x interpreters and it ran flawlessly, I didn't even have to import any module. My question: Is the following code `print("Hello SO!")` evaluated as a statement or an expression in Python2.x?

Original source