Movatterモバイル変換


[0]ホーム

URL:


[Python-Dev] closure semantics

Guido van Rossumguido at python.org
Tue Oct 21 18:51:59 EDT 2003


[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-overvariables should be read-only, and the current semantics allow us tomake them writable (as in Scheme, I suppose?) if we can agree on asyntax 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/)


More information about the Python-Devmailing list

[8]ページ先頭

©2009-2025 Movatter.jp