On 29 March 2018 at 08:09, Tim Delaney <timothy.c.dela...@gmail.com> wrote:
> On 29 March 2018 at 07:39, Eric V. Smith <e...@trueblade.com> wrote: > >> I’d vote #3 as well. >> >> > On Mar 28, 2018, at 11:27 AM, Serhiy Storchaka <storch...@gmail.com> >> wrote: >> > >> > There is a subtle semantic difference between str.format() and >> "equivalent" f-string. >> > >> > '{}{}'.format(a, b) >> > f'{a}{b}' >> > >> > In most cases this doesn't matter, but when implement the optimization >> that transforms the former expression to the the latter one ([1], [2]) we >> have to make a decision what to do with this difference. >> > Sorry about that - finger slipped and I sent an incomplete email ... If I'm not mistaken, #3 would result in the optimiser changing str.format() into an f-string in-place. Is this correct? We're not talking here about people manually changing the code from str.format() to f-strings, right? I would argue that any optimisation needs to have the same semantics as the original code - in this case, that all arguments are evaluated before the string is formatted. I also assumed (not having actually used an f-string) that all its formatting arguments were evaluated before formatting. So my preference would be (if my understanding in the first line is correct): 1: +0 2a: +0.5 2b: +1 3: -1 Tim Delaney
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com