pprintモジュールは、インタープリタの入力として使用することができる形の、任意のデータ構造を``pretty-print''できます。フォーマットされたデータ構造が、基本的なパイソンのタイプではないオブジェクトを含む場合、表現は読み込むことができないかもしれません。Python定数として表すことができない他の組み込みオブジェクトはもちろん、ファイル、ソケット、クラス、インスタンスようなオブジェクトが含まれていた場合は、そのようになります。
フォーマット表現は、可能ならばオブジェクトを1行に納めようとします。与えられた幅に納まらない場合は、複数行に分けます。幅の制限に合わせる必要がある場合は、(explicitly:はっきりと、明白に)PrettyPrinterオブジェクトを作ります。
pprintモジュールは、1つのクラスを定義しています。
>>> import pprint, sys >>> stuff = sys.path[:] >>> stuff.insert(0, stuff[:]) >>> pp = pprint.PrettyPrinter(indent=4) >>> pp.pprint(stuff) [ [ '', '/usr/local/lib/python1.5', '/usr/local/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python1.5/sharedmodules', '/usr/local/lib/python1.5/tkinter'], '', '/usr/local/lib/python1.5', '/usr/local/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python1.5/sharedmodules', '/usr/local/lib/python1.5/tkinter'] >>> >>> import parser >>> tup = parser.ast2tuple( ... parser.suite(open('pprint.py').read()))[1][1][1] >>> pp = pprint.PrettyPrinter(depth=6) >>> pp.pprint(tup) (266, (267, (307, (287, (288, (...))))))
PrettyPrinterクラスは、いくつかの派生的な関数をサポートします。
>>> stuff = sys.path[:] >>> stuff.insert(0, stuff) >>> pprint.pprint(stuff) [<Recursion on list with id=869440>, '', '/usr/local/lib/python1.5', '/usr/local/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python1.5/sharedmodules', '/usr/local/lib/python1.5/tkinter']
>>> pprint.isreadable(stuff) 0
次の関数も定義されています。
>>> pprint.saferepr(stuff) "[<Recursion on list with id=682968>, '', '/usr/local/lib/python1.5', '/usr/loca l/lib/python1.5/test', '/usr/local/lib/python1.5/sunos5', '/usr/local/lib/python 1.5/sharedmodules', '/usr/local/lib/python1.5/tkinter']"
guido@python.org