[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)}