[Python-Dev] PEP 572: Assignment Expressions (original) (raw)
Paul G paul at ganssle.io
Mon Apr 23 18:36:18 EDT 2018
- Previous message (by thread): [Python-Dev] PEP 572: Assignment Expressions
- Next message (by thread): [Python-Dev] PEP 572: Assignment Expressions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 04/23/2018 06:04 PM, Tim Peters wrote:
However, against "as" is that its current use in "with" statements does something quite different:
with f() as name: does not bind the result of
f()
toname
, but the result off()._enter_()
. Whether that "should be" fatal, I don't know, but it's at least annoying ;-)
This could be read a different way, though, since with f()
calls f().__enter__()
, you could read it as (with f()) as name:
, in which case it does the same thing as an as
-based binding expression would. Viewing it that way also helps alleviate the cognitive problem that with f() as name
and with (f() as name)
do two different things - the parentheses there are changing the precedence in the same way that 2 + 4 * 3
and (2 + 4) * 3
do two different things.
This sorta also works for except
, if you read it as (except SomeException) as e:
, but I think this fiction falls apart when you look at import
, since import foo
already binds "foo" to a name, and import foo as bar
not only binds foo
to bar
, but also doesn't bind foo
to foo
.
-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 833 bytes Desc: OpenPGP digital signature URL: <http://mail.python.org/pipermail/python-dev/attachments/20180423/781ce2c6/attachment.sig>
- Previous message (by thread): [Python-Dev] PEP 572: Assignment Expressions
- Next message (by thread): [Python-Dev] PEP 572: Assignment Expressions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]