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

David Teresi dkteresi at gmail.com
Tue Oct 2 23:44:11 EDT 2018


print(f'{value!d}') is a lot of symbols and boilerplate to type out just
for a debugging statement that will be deleted later. Especially now that
breakpoint() exists, I can't really see myself using this.

I also don't see the use case of it being within an f-string, because I've
never had to interpolate a debug string within some other string or format
it in a fancy way. You said it yourself, taking advantage of other f-string
features isn't very useful in this case.

If other people can find a use for it, I'd suggest making it ita own
function -- debug(value) or something similar.

David

On Tue, Oct 2, 2018, 8:27 PM Eric V. Smith <eric at trueblade.com> wrote:

> This idea was proposed to me at the core sprints last month by Larry
> Hastings. I've discussed it with a few people, who seem generally
> positive about it, and we've tweaked it a little bit. I've spent some
> time implementing it, and I think it's doable. I thought I'd post it
> here for any additional feedback.
>
> 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. So:
>
> value = 10
> s = 'a string!'
> print(f'{value!d}')
> print(f'next: {value+1!d}')
> print(f'{s!d}')
>
> produces:
>
> value=10
> next: value+1=11
> s='a string!'
>
> I’m not proposing this for str.format(). It would only really make sense
> for named arguments, and I don’t think
> print('{value!d}'.format(value=value) is much of a win.
>
> 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.
>
> The mnemonic is !d for “debugging”. I’d wanted to use !=, because
> there’s an equal sign involved in the result, but = is the one character
> that can’t be used after ! (it’s “not equal” in expressions, and
> f-strings look specifically for that case). I also mentioned !!, but I
> think I prefer !d as being less confusing.
>
> This would be used in debugging print statements, that currently end up
> looking like:
>
> print(f'value={value!r}')
>
> and would now be:
>
> print(f'{value!d}')
>
> There have been discussions about ways to specify str() vs. repr(),
> using characters other than '=', adding spaces, etc. But they all end up
> over-complicating what should be a simple tool, not a Swiss Army knife.
>
> Thoughts?
>
> Eric
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20181002/b9afaa89/attachment-0001.html>


More information about the Python-ideas mailing list