在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所述)。