почему последняя строка получила правильный вывод, а остальные нет?
Когда вы print foo
, распечатывается str(foo)
.
Однако, если foo
является list
, str(foo)
использует repr(bar)
для каждого элемента bar
, а не str(bar)
.
str
строки — это сама строка; repr
строки - это строка внутри кавычек, экранированная.
как исправить неправильные
Если вы хотите напечатать str
каждого элемента в list
, вы должны сделать это явно. Например:
print '[' + ', '.join(["asdf", "中文"]) + ']'
Были спорадические предложения изменить это поведение, поэтому str
в последовательности вызывает str
ее членов. PEP 3140 — отклоненное предложение. В этой ветке 2009 года поясняется причина отказа от нее.
Но в первую очередь это либо так, что они не печатают одно и то же:
a = 'foo, bar'
b = 'foo'
c = 'bar'
print [a]
print [b, c]
Или, перефразируя Неда Батчелдера: repr
всегда для гиков; str
для людей, когда это возможно, но печатать списки с их скобками и запятыми уже для гиков.
person
abarnert
schedule
10.07.2013