我理解語句和表達式之間的區別,並且我明白Python3會將print()轉換爲函數。在Python2.x中使用print()(函數版本)
但是我在各種Python2.x解釋器上運行了一個包含括號的print()語句,它運行得非常完美,我甚至不需要導入任何模塊。
我的問題:下面的代碼print("Hello SO!")
被評估爲Python2.x中的語句或表達式嗎?
我理解語句和表達式之間的區別,並且我明白Python3會將print()轉換爲函數。在Python2.x中使用print()(函數版本)
但是我在各種Python2.x解釋器上運行了一個包含括號的print()語句,它運行得非常完美,我甚至不需要導入任何模塊。
我的問題:下面的代碼print("Hello SO!")
被評估爲Python2.x中的語句或表達式嗎?
考慮下面的表達式:
a = ("Hello SO!")
a = "Hello SO!"
他們是等價的。以同樣的方式,聲明:
statement_keyword("foo")
statement_keyword "foo"
也是等同的。
請注意,如果你改變你的打印功能:
print("Hello","SO!")
你會發現蟒蛇2和Python 3之間的區別與Python 2,(...,...)
被interpteted以來打印一個元組是一個語句而在python 3中,這是一個帶有多個參數的函數調用。
因此,要回答手頭上的問題,print
被評價爲在Python 2.x的一份聲明中,除非你from __future__ import print_function
print("Hello SO!")
(在Python 2.6中引入)被評爲聲明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
......除非你從__future__ import print_function'或者其他所謂的東西。 – delnan
在Python3中會使用__future__導入print_function傷害嗎?它不會導致導入錯誤。 – sgoblin
@sgoblin - 沒有。 '__future__'模塊保證沒有任何東西會被刪除。它實際上是一個沒有運行python3.x – mgilson