Guido van Rossum wrote: > On 7/7/05, Walter Dörwald <[EMAIL PROTECTED]> wrote: > >>What is still unspecified (or at least not explicitely mentioned) in >>the PEP is the lifetime of VAR in: >> >> with EXPR as VAR: >> BLOCK > > It is specified well enough IMO -- you're supposed to take the > translation into basic Python seriously. That translation specifies a > simple assignment to VAR, and that's what I meant (and what I'm sure > most folks understood). IOW VAR lives in the surrounding scope, > overwrites a previous value, and survives past the with-statement > (unless it is set inside of course).
Are there use cases for both variants? If VAR would live only until the end of the with block, this would give us a nice way of generating nested data structures: class blist(list): def __init__(self, parent=None): if parent: parent.append(self) list.__init__(self) def __enter__(self): return self def __call__(self, *items): self.extend(items) return self x = blist() x(1) with blist(x) as x: x(2) with blist(x) as x: x(3) x(4) x(5) This would create the list: [1, [2, [3], 4], 5] With the current version of PEP 343, we would either have to use different variable names on each level or use a global stack where __enter__() and __exit__() push and pop values. Bye, Walter Dörwald _______________________________________________ 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