3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
在Python 2.x print
中實(shí)際上是一個(gè)特殊的語(yǔ)句而不是函數(shù)*。
這也是它不能像以下一樣使用的原因: lambda x: print x
請(qǐng)注意,(expr)
不會(huì)創(chuàng)建元組(它會(huì)產(chǎn)生expr
),但,
確實(shí)如此。這可能導(dǎo)致Python 2.7 之間print (x)
和之間的混淆print (x, y)
(1) # 1 -- no tuple Mister!(1,) # (1,)(1,2) # (1, 2)1,2 # 1 2 -- no tuple and no parenthesis :) [See below for print caveat.]
但是,因?yàn)樵赑ython 2.x中print
是一個(gè)特殊的語(yǔ)法語(yǔ)句/語(yǔ)法構(gòu)造,所以沒(méi)有括號(hào),它,
以特殊的方式處理它們 - 并且不創(chuàng)建元組。對(duì)print
聲明的這種特殊處理使其能夠以不同的方式采取不同的行動(dòng),
。
快樂(lè)的編碼。
* print
Python 2中的這種行為可以更改為Python 3的行為:
from __future__ import print_function

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
在UTF-8方面,我們有一個(gè)有趣的副作用。
>> greek = dict( dog="σκ?λο?", cat="γ?τα" )
>> print greek['dog'], greek['cat']
σκ?λο? γ?τα
>> print (greek['dog'], greek['cat'])
('\xcf\x83\xce\xba\xcf\x8d\xce\xbb\xce\xbf\xcf\x82', '\xce\xb3\xce\xac\xcf\x84\xce\xb1')
最后一個(gè)打印是帶有十六進(jìn)制字節(jié)值的元組。

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
這一切都非常簡(jiǎn)單,與向前或向后兼容無(wú)關(guān)。
print
在版本3之前的所有Python版本中的語(yǔ)句的一般形式是:
print expr1, expr2, ... exprn
(依次評(píng)估每個(gè)表達(dá)式,轉(zhuǎn)換為字符串并在它們之間顯示空格。)
但請(qǐng)記住,在表達(dá)式周圍加上括號(hào)仍然是相同的表達(dá)式。
所以你也可以這樣寫:
print (expr1), (expr2), ... (expr3)
這與調(diào)用函數(shù)無(wú)關(guān)。
添加回答
舉報(bào)