[Python-Dev] pprint(iterator) (original) (raw)
Ron Adam rrr at ronadam.com
Fri Jan 30 04:23:55 CET 2009
- Previous message: [Python-Dev] pprint(iterator)
- Next message: [Python-Dev] pprint(iterator)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Steven D'Aprano wrote:
Michael Foord wrote:
Don't we have a pretty-print API - and isn't it spelled str ? Not really. If it were as simple as calling str(obj), there would be no need for the pprint module.
I agree. And when I want to use pprint, there are usually additional output formatting requirements I need that isn't a "one size fits all" type of problem.
In any case, it seems that the pprint module
actually calls repr() on objects other than dicts, tuples and lists.
I'm concerned about the number of special methods exploding, but I've also come across times where I needed more than two string representations of an object. Sometimes I solved this by adding a pprint() method, other times I used other names, and it would be nice if there was a standard way of spelling it. So I'm +0.5 on Aahz's suggestion of pprint.
I'm -.5 on addint pprint for the above reasons.
In my ideal world, pprint should allow (but not require) extra arguments, so that one can do something like the following:
pprint(binarytree) # sensible defaults pprint(binarytree, order='preorder')
It seems to me pprint is one of those functions where output format specifiers and keywords make sense because you are trying to fit the data output of a wide variety of types to a particular output need. It's not reasonably possible for each type to predict what that output need is.
Some of the options that sound useful might be:
abbreviated form
short form
long complete detail form
tree form
column align form
right or left margins and alignment options
Think of it as how 'dir' is used for examining the contents of a disk drive where different output styles is useful at different times.
Looking at it this way, instead of a pprint method, a optional pprint_style attribute could specify a default output style that the pprint function would fall back to.
Maybe for iterators, it's not the data produced but rather the current state of use that is more useful?
For example for partially consumed iterators it might be useful to express how many items have been taken, and how many are left to take when that info is available. (?)
The idea is that pretty printing is usually used to check the status or state of something. Or at least that is how I use it.
Ron
- Previous message: [Python-Dev] pprint(iterator)
- Next message: [Python-Dev] pprint(iterator)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]