> With "var": > > var a = 3 > def f(): > var b = 4 > def g(): > var c = 5 > a, b, c = 0, 1, 2 # changes outer a, outer b, and c > g() > f() > > Now i think this is a little bit weird, because the statement > "var b = 4" in an outer scope changes the meaning of "b" in an > inner scope. But it does have the virtue of retaining behaviour > compatible with today's Python, while offering a way to get proper > lexical scopes for those who want to use them. > > Thoughts? Other ideas?
Maybe an object, like self, for referring to enclosing scopes? a = 3 def f(): b = 4 def g(): c = 5 outer.outer.a, outer.b, c = 0, 1, 2 # changes outer a, outer b, and c g() f() Chaining the keyword looks a little weird, but it is not often that you have to refer to variables in the enclosing scope of the enclosing scope. I have often wanted something similar to that for global variables, instead of the global declaration: cache = None def init(): if not global.cache: global.cache = init_cache() -- mvh Björn _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com