Moved order of evaluation into the Specification section, since it's guaranteed.

This commit is contained in:
Eric V. Smith 2015-08-28 12:21:04 -04:00
parent 3e2bcc6966
commit 088fee8cb8
1 changed files with 19 additions and 19 deletions

View File

@ -360,6 +360,25 @@ Leading and trailing whitespace in expressions is skipped
For ease of readability, leading and trailing whitespace in For ease of readability, leading and trailing whitespace in
expressions is ignored. expressions is ignored.
Evaluation order of expressions
-------------------------------
The expressions in an f-string are evaluated in left-to-right
order. This is detectable only if the expressions have side effects::
>>> def fn(l, incr):
... result = l[0]
... l[0] += incr
... return result
...
>>> lst = [0]
>>> f'{fn(lst,2)} {fn(lst,3)}'
'0 2'
>>> f'{fn(lst,2)} {fn(lst,3)}'
'5 7'
>>> lst
[10]
Discussion Discussion
========== ==========
@ -602,25 +621,6 @@ having 2 expressions::
f'{x:.{width}}' f'{x:.{width}}'
Evaluation order of expressions
-------------------------------
The expressions in an f-string are evaluated in left-to-right
order. This is detectable only if the expressions have side effects::
>>> def fn(l, incr):
... result = l[0]
... l[0] += incr
... return result
...
>>> lst = [0]
>>> f'{fn(lst,2)} {fn(lst,3)}'
'0 2'
>>> f'{fn(lst,2)} {fn(lst,3)}'
'5 7'
>>> lst
[10]
Expressions used multiple times Expressions used multiple times
------------------------------- -------------------------------