[Python-ideas] f-string "debug" conversion

Tim Peters tim.peters at gmail.com
Wed Oct 3 00:23:15 EDT 2018


[Eric V. Smith <eric at trueblade.com>]

> Here’s the idea: for f-strings, we add a !d conversion operator, which
> is superficially similar to !s, !r, and !a. The meaning of !d is:
> produce the text of the expression (not its value!), followed by an
> equal sign, followed by the repr of the value of the expression.

...

> The result is a string, so if you really wanted to, you could use a
> string formatting spec. So:
>
> print(f'*{value!d:^20}*'
>
> would produce:
>
> *      value=10      *
>
> Although I don’t think that would be very useful in general.


Me neither ;-)  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 repe is almost never what I want to see.

>>> f"math.pi={math.pi:.2f}"
'math.pi=3.14'

I have plenty of code already embedding stuff of the form

    EXPR {EXPR:FMT}

and don't really care whether there's a space or an "=" between the
chunks.  "!d" could act like a macro-expansion operator automating a
mechanical transformation inside the f-string.  Then I could read "!d" as
"duplicate" instead of as "debug" ;-)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20181002/0d65f648/attachment.html>


More information about the Python-ideas mailing list