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