[Python-Dev] Subtle difference between f-strings and str.format() (original) (raw)
Serhiy Storchaka storchaka at gmail.com
Thu Mar 29 14:30:42 EDT 2018
- Previous message (by thread): [Python-Dev] Subtle difference between f-strings and str.format()
- Next message (by thread): [Python-Dev] Subtle difference between f-strings and str.format()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
29.03.18 13:17, Jeff Allen пише:
'{1} {0}'.format(a(), b()) # E1
f'{b()}{a()}' # E2
I think I would be very surprised to find b called before a in E1 because of the general contract on the meaning of method calls. I'm assuming that's what an AST-based optimisation would do? There's no reason in E2 to call them in any other order than b then a and the documentation tells me they are.
I was going to optimize only formatting with implicit references. '{} {}' but not '{1} {0}' and either not '{0} {1}'. This guaranties in-order computation and referencing every subexpression only once. I don't have a goal of converting every string formatting, but only the most common and the most simple ones.
If go further, we will need to add several new AST nodes (like for comprehensions).
- Previous message (by thread): [Python-Dev] Subtle difference between f-strings and str.format()
- Next message (by thread): [Python-Dev] Subtle difference between f-strings and str.format()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]