[Python-Dev] PEP 572: Assignment Expressions (original) (raw)

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