Як зазначалося в інших відповідях, pprintце чудовий модуль, який буде робити те, що ви хочете. Однак, якщо ви не хочете імпортувати його, а просто хочете надрукувати результати налагодження під час розробки, ви можете наблизити його результати.
Деякі інші відповіді добре працюють для рядків, але якщо ви спробуєте їх з об’єктом класу, це дасть вам помилку TypeError: sequence item 0: expected string, instance found.
Для більш складних об’єктів переконайтеся, що клас має __repr__метод, який друкує потрібну інформацію про властивості:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
А потім, коли ви хочете надрукувати вихідні дані, просто зіставте свій список із такою strфункцією:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
виходи:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
Ви також можете зробити щось на зразок перевизначення __repr__методу, listщоб отримати форму вкладеного симпатичного друку:
class my_list(list):
def __repr__(self):
return "[%s]" % ",\n ".join(map(str, self))
a = my_list(["first", 2, my_list(["another", "list", "here"]), "last"])
print a
дає
[first,
2,
[another,
list,
here],
last]
На жаль, немає відступу другого рівня, але для швидкої налагодження це може бути корисним.