Расхождение вывода Python print () - PullRequest
0 голосов
/ 19 декабря 2010

Я возиться с питоном, следуя этому уроку:

http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3/Hello,_World

Согласно этому мой вывод для следующего кода:

print("Single String")
print("Concat", "String")

Должно выглядеть так:

Single String
Concat String

Но это выглядит так:

Single String
('Concat', 'String')

Почему это? Я на OSX с Python 2.6.

РЕДАКТИРОВАТЬ: я только что понял, руководство для 3.0, и у меня есть 2.6. Это вызывает проблему? Какой самый быстрый способ обновить мою установку Python?

РЕДАКТИРОВАТЬ 2: обновление исправлено :) Принятый ответ объясняет различия.

Ответы [ 7 ]

3 голосов
/ 19 декабря 2010
print("Concat", "String")

Это tuple.Когда вы помещаете ,, он становится кортежем и, следовательно, Python выводит его таким же образом.

>>> t = ('Let', 'Us', 'Test')
>>> type(t)
<type 'tuple'>

Кортеж состоит из нескольких значений, разделенных запятыми.

2 голосов
/ 02 октября 2012

Для совместимости в Python 2.7 вы можете использовать заполнители

print('%s %s')%("Concat", "String")
2 голосов
/ 19 декабря 2010

Если вы используете Python 2.x, вы можете просто использовать

print "Single", "String"

Python 3.x меняет способ работы печати, раньше это был оператор, а теперь это функция.

2 голосов
/ 19 декабря 2010

Не ответ на первоначальный вопрос ОП, на который, как мне кажется, Сухбир ответил достаточно хорошо, но на следующий вопрос.

Я полагаю, что самым быстрым способом обновления было бы перейти на веб-сайт Python и загрузить v3.

1 голос
/ 19 декабря 2010

В Python 2.6 вы также можете сказать

from __future__ import print_statement

, чтобы получить синтаксис 3.x.

1 голос
/ 19 декабря 2010

Причина в том, что вы используете учебник по Python 3 с Python 2.

0 голосов
/ 19 декабря 2010

Чтобы получить желаемое поведение, вам нужно вывести строковое представление кортежа. Вы можете получить это, используя метод join для строк:

print ' '.join(('a', 'b'))

Причина, по которой поведение не соответствует ожидаемому, заключается в том, что в Python 2 ключевое слово print В Python 3 он был заменен функцией (также print), поэтому последний синтаксис вызывает функцию вместо печати кортежа. Вы можете повторить поведение, которое вы видите в Python 3, с помощью

print(('a', 'b'))

Один набор скобок для вызова функции и один для кортежа.

...