在Python2.x中使用print()
我理解一个语句和一个expression式之间的区别,我知道Python3把print()变成了一个函数。
然而,我运行了一个print()语句,在各种Python2.x解释器中用圆括号括起来,它运行得非常完美,我甚至不需要导入任何模块。
我的问题是:下面的代码print("Hello SO!")评估为语句或Python2.x中的expression式? 
考虑以下expression式:
 a = ("Hello SO!") a = "Hello SO!" 
他们是相同的。 用同样的方式,声明:
 statement_keyword("foo") statement_keyword "foo" 
也是等同的。
请注意,如果您将打印function更改为:
 print("Hello","SO!") 
 你会注意到python 2和python 3的区别。用python 2, (...,...)被插入为一个元组,因为print是一个语句,而在python 3中,它是一个带有多个参数的函数调用。 
 因此,为了回答这个问题,除非你from __future__ import print_function (在python 2.6中引入),否则print被评估为Python 2.x中的语句, 
  print("Hello SO!")被评估为语句print ("Hello SO!") ,其中print语句的参数是expression式("Hello SO!") 。 
 如果您打印多个值,这可能会有所不同; 例如print("Hello", "world")将打印2个元素的元组('Hello', 'world')而不是两个string"Hello"和"world" 。 
 为了兼容Python 3,使用from __future__ import print_function : 
 >>> print("Hello", "world") ('Hello', 'world') >>> from __future__ import print_function >>> print("Hello", "world") Hello world 
 它仍然被评估为一个声明,你只是打印("Hello SO!") ,它只是评估为"Hello SO!" 因为它不是一个元组(如delnan所述)。