Issue448679
Created on 2001年08月07日 06:55 by tim.peters, last changed 2022年04月10日 16:04 by admin. This issue is now closed.
| Files |
| File name |
Uploaded |
Description |
Edit |
|
ref5.diff
|
loewis,
2002年08月04日 09:58
|
|
evalorder.patch
|
niemeyer,
2002年11月26日 22:56
|
| Messages (6) |
|
msg5810 - (view) |
Author: Tim Peters (tim.peters) * (Python committer) |
Date: 2001年08月07日 06:55 |
The Ref Man doesn't explicitly say anything about
Python's left-to-right evaluation order. Strict left-
to-right was Guido's intent, though, and it comes up a
few times per year on c.l.py (indeed, I was just
replying to a msg asking about it).
The docs should get fleshed out.
There's also a bug:
>>> counter = 0
>>> def i():
... global counter
... counter += 1
... return counter
...
>>> {i(): i()}
{2: 1}
>>> {i(): i(), i(): i()}
{4: 3, 6: 5}
>>>
That is, key:value *pairs* are evaluated left to
right, but within a single key:value pair, the value
gets evaluated first. When I asked Guido about that
some years ago, he agreed it was a bug.
|
|
msg5811 - (view) |
Author: Martin v. Löwis (loewis) * (Python committer) |
Date: 2002年08月04日 09:58 |
Logged In: YES
user_id=21627
With the patch attached, this behaviour is cast into stone
(or, atleast into a SF tracker :)
|
|
msg5812 - (view) |
Author: Gustavo Niemeyer (niemeyer) * (Python committer) |
Date: 2002年11月26日 22:56 |
Logged In: YES
user_id=7887
I'm attaching a suggested solution for the problem,
including documentation and reordering of dict evaluation.
|
|
msg5813 - (view) |
Author: Gustavo Niemeyer (niemeyer) * (Python committer) |
Date: 2002年12月01日 02:05 |
Logged In: YES
user_id=7887
Martin, could you please review the proposed solution?
|
|
msg5814 - (view) |
Author: Martin v. Löwis (loewis) * (Python committer) |
Date: 2002年12月02日 10:58 |
Logged In: YES
user_id=21627
The patch looks fine, please apply it.
It would be good to check that Jython meets all your
expectations in this respect, and that it, in particular,
executes all the examples in the documentation in the right
order.
This change should *not* be backported to 2.2 IMO.
|
|
msg5815 - (view) |
Author: Gustavo Niemeyer (niemeyer) * (Python committer) |
Date: 2002年12月16日 14:05 |
Logged In: YES
user_id=7887
Martin, I've checked with Jython and the examples are ok as
well.
I have applied as:
Doc/ref/ref5.tex: 1.71
Python/compile.c: 2.267
Lib/compiler/pycodegen.py: 1.62
Misc/NEWS: 1.561
Thank you!
|
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2022年04月10日 16:04:17 | admin | set | github: 34910 |
| 2001年08月07日 06:55:27 | tim.peters | create |