[Python-Dev] PEP 498 (interpolated f-string) tweak (original) (raw)
Eric V. Smith eric at trueblade.com
Sat Sep 19 13:03:05 CEST 2015
- Previous message (by thread): [Python-Dev] My collection of Python 3.5.0 regressions
- Next message (by thread): [Python-Dev] PEP 498 (interpolated f-string) tweak
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
While finishing up the implementation of PEP 498, I realized that the PEP has an error. It says that this code:
f'abc{expr1:spec1}{expr2!r:spec2}def{expr3:!s}ghi'
Is equivalent to:
'abc' + expr1.format(spec1) + repr(expr2).format(spec2) + 'def'
- str(expr3).format('') + 'ghi'
But that's not correct. The right way to call format is:
type(expr1).format(expr1, spec1)
That is, the lookup of format is done on the type, not the instance.
Instead of calling format, I've changed the code generator to call format(expr1, spec1). As an optimization, I might add special opcodes to deal with this and string concatenation, but that's for another day (if ever).
I've posted a new version of the code in issue 24965. I'll update the PEP itself sometime this weekend.
- Previous message (by thread): [Python-Dev] My collection of Python 3.5.0 regressions
- Next message (by thread): [Python-Dev] PEP 498 (interpolated f-string) tweak
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]