[Python-Dev] PEP 572: Assignment Expressions
Mike Miller
python-dev at mgmiller.net
Sat Apr 21 22:04:18 EDT 2018
Round 2 (Changed order, see below):
1. with open(fn) as f: # current behavior
2. with (open(fn) as f): # same
3. with closing(urlopen(url)) as dl: # current behavior
5. with (closing(urlopen(url)) as dl): # same
4. with closing(urlopen(url) as dl): # urlopener named early
On 2018-04-20 17:15, Chris Angelico wrote:
> The second and fifth could be special cased as either the same as
> first and third, or as SyntaxErrors. (But which?)
If they are expressions, they should be the same once evaluated, no?
(I had a brief episode where I wrote that "as" was required with "with", instead
of the CM object, sorry. :)
> The fourth one is very tricky. If 'expr as name' is allowed inside arbitrary
> expressions, why shouldn't it be allowed there?
Yes, they should be allowed there.
> The disconnect between viable syntax and useful statements is problematic here.
Number 4 appears to name the urlopener early. Since closing() returns it as
well, might it work anyway?
Might be missing something else, but #4 looks like a mistake with the layout of
the parentheses, which can happen anywhere. I don't get the sense it will
happen often.
Cheers,
-Mike
More information about the Python-Dev
mailing list