[Tim]
.... But what if
{EXPR!d:FMT}
acted like the current
EXPR={EXPR:FMT}
? I'd find _that_ useful often. For example, when displaying floats, where the repr is almost never what I want to see. ...
[Eric V. Smith eric@trueblade.com]
After giving this some more thought, the problem with this approach is that there's no way to get the repr of the object, which for debugging can be pretty useful (think strings).
Sure there is:
f"{repr(var)!d"}
would expand to, as a matter of course (nothing special about it):
f"{repr(var)={repr(var)}"
which would yield, e.g.,
repr(var)=`a\n'
Special shortcuts for calling `repr()` went out of style when Guido got rid of that meaning for the backtick symbol ;-)
Remember, by default
object.__format__ calls object.__str__.
Which - since there's already a related default - makes it a Dubious Idea to make some other spelling use a different default.
I guess we could get around this by combining !d and !r and assigning some meaning to that, which I'd rather not do.
Or, this occurred to me right before hitting "send": if there's no format spec, use repr(expr). If there is one (even if it's zero-length), use format(expr, spec). I'll have to think on that for a while. Maybe there's too much voodoo going on there.
The alternative: if I want repr,(which I usually don't), make me call "repr()" (which I don't mind at all).
If there must be a shortcut, "!dr" or "!rd" are at least cryptically explicit, and
{EXPR!dr}
would expand to
EXPR={repr(EXPR)}