[Python-Dev] assignment expressions: an alternative proposal
Chris Angelico
rosuav at gmail.com
Tue Apr 24 12:35:57 EDT 2018
More information about the Python-Dev mailing list
Tue Apr 24 12:35:57 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 Wed, Apr 25, 2018 at 2:28 AM, Steven D'Aprano <steve at pearwood.info> wrote: > On Tue, Apr 24, 2018 at 10:58:24AM -0400, Yury Selivanov wrote: > >> Since 'diff' and 'g' must be new names according to rule (3), those >> who read the code will notice that both were not previously bound. > > How am I supposed to notice that they've never been bound without > carefully reading through the rest of the function in detail, checking > every single expression and statement? > > And besides, you have already established that there are exceptions to > the rule "names must be new names". For example, in loops. > > What other exceptions are there? > Yuri is talking about "new" in the syntactic sense. A new name is one which, reading lexically through the code, has not yet been assigned to in the function. (I don't know what happens with global/nonlocal declarations.) Loops have a single point at which the name is assigned to. This has a single point where the name is assigned, too, even though you'll never hit it: def f(x): if x is not x: y = 1 print(y) # UnboundLocalError While I disagree with the proposal, it is at least sane from the compiler's POV. I don't think it makes sense from a human's POV, but it's internally consistent. ChrisA
- 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