我理解语句和表达式之间的区别,我理解Python3将print()转换为函数。
但是我在各种Python2.x解释器上运行了一个用括号括起来的print()语句,它运行得很完美,我甚至不需要导入任何模块。
我的问题:以下代码print("Hello SO!")
是否被评估为Python2.x中的语句或表达式?
答案 0 :(得分:46)
考虑以下表达式:
a = ("Hello SO!")
a = "Hello SO!"
他们是等同的。以同样的方式,声明:
statement_keyword("foo")
statement_keyword "foo"
也相同。
请注意,如果将打印功能更改为:
print("Hello","SO!")
你会注意到python 2和python 3之间的区别。对于python 2,(...,...)
被作为元组插入,因为print是一个语句而在python 3中,它是一个带有多个参数的函数调用。 / p>
因此,为了回答手头的问题,print
被评估为python 2.x中的一个语句,除非你from __future__ import print_function
(在python 2.6中引入)
答案 1 :(得分:14)
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
答案 2 :(得分:2)
它仍然被评估为一个语句,你只是打印("Hello SO!")
,它只是评估为"Hello SO!"
,因为它不是一个元组(如delnan所提到的)。