2014-02-05 27 views
1

印刷之間的區別是什麼在Python版畫的區別:是什麼在Python

print 'smth' 
print('smth') 
+0

沒有真正的區別,首先是一種語法糖。 – gravetii

+3

@gravetii:不,第二種方法在Python 2中大部分時間都是巧合的,其中'print'是一個語句,而不是函數。首先不是語法糖,這是正確的用法。 – geoffspear

回答

6

print由在Python 3的功能(而在此之前,這是一個語句),那麼你的第一行是python2風格,後者是python3風格。

具體而言,在python2,與()印刷所要打印的元組:

In [1414]: print 'hello', 'kitty' 
hello kitty 

In [1415]: print ('hello', 'kitty') 
('hello', 'kitty') 

In [1416]: print ('hello') #equals: print 'hello', 
          #since "()" doesn't make a tuple, the commas "," do 
hello 
在python3

,而不()打印給出了語法錯誤:

In [1]: print ('hello', 'kitty') 
hello kitty 

In [2]: print 'hello', 'kitty' 
    File "<ipython-input-2-d771e9da61eb>", line 1 
    print 'hello', 'kitty' 
       ^
SyntaxError: invalid syntax 
+3

'print('smth')'in python2 will be working though。因爲'('smth')'相當於寫'smth''。 –

+1

@LoïcFaure-Lacroix不是。 '('smth')'仍然是字符串,但是'('smth',)'是元組。 – J0HN

+0

@ J0HN這就是我說的 –

3

在Python 3,print是一個函數。

>>> print('a','b','c') 
a b c 

在Python 2,print是比較有限的功能關鍵字:

>>> print 'a','b','c' 
a b c 

雖然print()作品在Python 2,這不是在做什麼你可能認爲。正在打印一個元組,如果有多於一個的元素是:

>>> print('a','b','c') 
('a', 'b', 'c') 

對於一個元件括號表達式的有限的情況下,括號中移除:

>>> print((((('hello'))))) 
hello 

但這僅僅作用Python表達式解析器,而不是打印的動作:

>>> ((((('hello'))))) 
'hello' 

如果它是一個元組,一個元組被印刷:

>>> print((((('hello',))))) 
('hello',) 

您可以通過導入得到它在Python 2是Python 3的打印功能:

>>> print('a','b','c') 
('a', 'b', 'c') 
>>> from __future__ import print_function 
>>> print('a','b','c') 
a b c 

PEP 3105討論了變化。