Như các câu trả lời khác đã đề cập, pprintlà một mô-đun tuyệt vời sẽ làm những gì bạn muốn. Tuy nhiên, nếu bạn không muốn nhập nó và chỉ muốn in đầu ra gỡ lỗi trong quá trình phát triển, bạn có thể ước tính đầu ra của nó.
Một số câu trả lời khác hoạt động tốt cho các chuỗi, nhưng nếu bạn thử chúng với một đối tượng lớp, nó sẽ cho bạn lỗi TypeError: sequence item 0: expected string, instance found .
Đối với các đối tượng phức tạp hơn, hãy đảm bảo rằng lớp có __repr__phương thức in thông tin thuộc tính bạn muốn:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
Và sau đó khi bạn muốn in đầu ra, chỉ cần ánh xạ danh sách của bạn với strhàm như sau:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
kết quả đầu ra:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
Bạn cũng có thể làm những việc như ghi đè __repr__phương thức của listđể có được một biểu mẫu in đẹp lồng nhau:
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
cho
[first,
2,
[another,
list,
here],
last]
Rất tiếc là không có thụt lề cấp hai nhưng để gỡ lỗi nhanh, nó có thể hữu ích.