[Python-Dev] Subtle difference between f-strings and str.format() (original) (raw)
Serhiy Storchaka storchaka at gmail.com
Wed Mar 28 14:54:51 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 ]
28.03.18 21:30, Tim Peters пише:
[Tim]
I have a hard time imaging how that could have come to be, but if it's true I'd say the unoptimized code was plain wrong. The dumbest possible way to implement
f() and g()
is also the correct ;-) way:result = f() if not bool(result): result = g() Heh - that's entirely wrong, isn't it? That's how
or
is implemented ;-) Same top-level point, though: result = f() if bool(result): result = g()
Optimized
if f() and g(): spam()
is equivalent to
result = f() if bool(result): result = g() if bool(result): spam()
Without optimization it would be equivalent to
result = f() if bool(result): result = g() if bool(result): spam()
It calls bool() for the result of f() twice if it is false.
Thus there is a small difference between
if f() and g(): spam()
and
tmp = f() and g() if tmp: spam()
- 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 ]