[Python-ideas] Briefer string format

Bruce Leban bruce at leban.us
Mon Jul 20 23:29:01 CEST 2015


On Mon, Jul 20, 2015 at 11:41 AM, Steve Dower <Steve.Dower at microsoft.com>
 wrote:

> Indexing is supported in format strings too, so f'{a[1]}' also becomes
> '{a[1]}'.format(a=a), but I don't think there are any other strange cases
> here. I would vote for f'{}' or f'{0}' to just be a SyntaxError.
>

Maybe I'm missing something, but it seems this could just as reasonably be
'{}'.format(a[1])?

Is there a reason to prefer the other form over this?

On Mon, Jul 20, 2015 at 1:20 PM, Eric V. Smith <eric at trueblade.com> wrote:

> So:
> f'api:{sys.api_version} {a} size{sys.maxsize}'
>
> would become either:
> f'api:{.api_version} {} size{.maxsize}'.format(sys, a, sys)
> or
> f'api:{0.api_version} {1} size{0.maxsize}'.format(sys, a)
>

Or: f'api:{} {} size{}'.format(sys.api_version, a, sys.maxsize)

Note that format strings don't allow variables in subscripts, so

f'{a[n]}'  ==>   '{}'.format(a['n'])

Also, the discussion has assumed that if this feature were added it
necessarily must be a single character prefix. Looking at the grammar, I
don't see that as a requirement as it explicitly defines multiple character
sequences. A syntax like:

format'a{b}c'
formatted"""a{b}
c"""


might be more readable. There's no namespace conflict just as there is no
conflict between raw string literals and a variable named r.

--- Bruce
Check out my new puzzle book: http://J.mp/ingToConclusions
Get it free here: http://J.mp/ingToConclusionsFree (available on iOS)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150720/e1086188/attachment.html>


More information about the Python-ideas mailing list