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

元气小坏坏 提交于 2019-12-17 02:49:10

问题


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?


回答1:


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)




回答2:


print("Hello SO!") is evaluated as the statement print ("Hello SO!"), where the argument to the print statement is the expression ("Hello SO!").

This can make a difference if you are printing more than one value; for example print("Hello", "world") will print the 2-element tuple ('Hello', 'world') instead of the two strings "Hello" and "world".

For compatibility with Python 3 use from __future__ import print_function:

>>> print("Hello", "world")
('Hello', 'world')
>>> from __future__ import print_function
>>> print("Hello", "world")
Hello world



回答3:


It is still evaluated as a statement, you are simply printing ("Hello SO!"), which simply evaluates to "Hello SO!" since it is not a tuple (as mentioned by delnan).



来源:https://stackoverflow.com/questions/12162629/using-print-the-function-version-in-python2-x

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!