[Changing the subject.] [Samuele] > this is a bit OT and too late, but given that our closed over > variables are read-only, I'm wondering whether, having a 2nd chance, > using cells and following mutations in the enclosing scopes is > really worth it, we kind of mimic Scheme and relatives but there > outer scope variables are also rebindable. Maybe copying semantics > not using cells for our closures would not be too insane, and people > would not be burnt by trying things like this: > > for msg in msgs: > def onClick(e): > print msg > panel.append(Button(msg,onClick=onClick)) > > which obviously doesn't do what one could expect today. OTOH as for > general mutability, using a mutable object (list,...) would allow > for mutability when one really need it (rarely). It was done this way because not everybody agreed that closed-over variables should be read-only, and the current semantics allow us to make them writable (as in Scheme, I suppose?) if we can agree on a syntax to declare an "intermediate scope" global. Maybe "global x in f" would work? def outer(): x = 1 def intermediate(): x = 2 def inner(): global x in outer x = 42 inner() print x # prints 2 intermediate() print x # prints 42 --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4