[Python-Dev] assignment expressions: an alternative proposal
Yury Selivanov
yselivanov.ml at gmail.com
Tue Apr 24 11:25:58 EDT 2018
More information about the Python-Dev mailing list
Tue Apr 24 11:25:58 EDT 2018
- Previous message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Next message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, Apr 24, 2018 at 11:15 AM, Steven D'Aprano <steve at pearwood.info> wrote: [..] >> >> 3. Most importantly: it is *not* allowed to mask names in the current >> >> local scope. > > That means you can't rebind existing variables. That means you can't > rebind to the same variable in a loop. No, it doesn't. The check is performed during compile phase, and Python does not unroll loops. Anyways, read below. > I believe that one of the most important use-cases for binding- > expression syntax is while loops, like this modified example taken from > PEP 572 version 3: > > while (data = sock.read()): > print("Received data:", data) > > If you prohibit re-binding data, that prohibits cases like this, or even > using it inside a loop: > > for value in sequence: > process(arg, (item = expression), item+1) No it doesn't. symtable in Python works differently. I encourage you to test my reference implementation: py> for val in [1, 2, 3]: ... print((item=val), item+1) ... 1 2 2 3 3 4 > Why is this allowed? > > x = 1 # both are statement forms > x = 2 > > but this is prohibited? > > x = 1 > (x = 2) # no rebinding is allowed > > and even more confusing, this is allowed! > > (x = 1) # x doesn't exist yet, so it is allowed > x = 2 # statement assignment is allowed to rebind These all are very limited code snippets that you're unlikely to see in real code. I can write (and I did in this thread) a bunch of examples of where PEP 572 is also inconsistent. Yury
- Previous message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Next message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list