[Python-Dev] Subtle difference between f-strings and str.format()

Paul Moore p.f.moore at gmail.com
Wed Mar 28 15:21:15 EDT 2018


On 28 March 2018 at 20:12, Serhiy Storchaka <storchaka at gmail.com> wrote:
> 28.03.18 22:05, Paul Moore пише
>
> I can't imagine (non-contrived) code where the fact that a is
> formatted before b is evaluated would matter, so I'm fine with option
> 3.
>
>
> If formatting a and evaluating b both raise exceptions, the resulting
> exception depends on the order.
>
> $ ./python -bb
>>>> a = b'bytes'
>>>> '{}{}'.format(a, b)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> NameError: name 'b' is not defined
>>>> f'{a}{b}'
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> BytesWarning: str() on a bytes instance

Thanks, I hadn't thought of that. But I still say that code that
depends on which exception was raised is "contrived".

Anyway, Guido said #3, so no reason to debate it any further :-)

Paul


More information about the Python-Dev mailing list