我了解语句和表达式之间的区别,并且我了解 Python3 将 print() 变成了函数。
然而,我在各种 Python2.x 解释器上运行了一个用括号括起来的 print() 语句,它运行完美,我什至不必导入任何模块。
我的问题:以下代码是print("Hello SO!")
作为 Python2.x 中的语句还是表达式进行评估的?
我了解语句和表达式之间的区别,并且我了解 Python3 将 print() 变成了函数。
然而,我在各种 Python2.x 解释器上运行了一个用括号括起来的 print() 语句,它运行完美,我什至不必导入任何模块。
我的问题:以下代码是print("Hello SO!")
作为 Python2.x 中的语句还是表达式进行评估的?
考虑以下表达式:
a = ("Hello SO!")
a = "Hello SO!"
它们是等价的。同理,用一个语句:
statement_keyword("foo")
statement_keyword "foo"
也是等价的。
请注意,如果您将打印功能更改为:
print("Hello","SO!")
你会注意到 python 2 和 python 3 之间的区别。在 python 2 中,(...,...)
由于 print 是一个语句,所以它被解释为一个元组,而在 python 3 中,它是一个带有多个参数的函数调用。
因此,要回答手头的问题,除非您(在 python 2.6 中引入),print
否则在 python 2.x 中将其评估为语句from __future__ import print_function
print("Hello SO!")
被评估为语句print ("Hello SO!")
,其中语句的参数print
是表达式("Hello SO!")
。
如果您要打印多个值,这可能会有所不同;例如print("Hello", "world")
将打印 2 元素元组('Hello', 'world')
而不是两个字符串"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 所述)。