2014-02-05 2 views
1

В чем разница между отпечатками в питоне:В чем разница между отпечатками в питона

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, печать без () дает SyntaxError:

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')' в python2 будет работать. Поскольку '('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 3 в Python 2, импортируя его:

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

PEP 3105 обсуждает изменения.

Смежные вопросы