Peter Otten wrote: > Bruno Desthuilliers wrote: > > >>2/ functional solution: >>----------------------- >>def make_funcs(): >> x = 0 >> def _abc(): >> x = 1 >> return x + 1 >> def _abcd(): >> return x + 1 >> return _abc, _abcd >> >>abc, abcd = make_funcs() >>print abc() >>print abcd() > > > The x in function _abc() is not the same as that in make_funcs() and _abcd() > as you can easily verify by modifying _abc() to > > def _abc(): > x # raises UnboundLocalError > x = 1 > return x + 1 > > Once a variable is assigned a value the compiler treats it as local to that > function. Closed-over variables are therefore always read-only, much to the > chagrin of Lisp-lovers.
Doh :( I wasn't aware of this limitation (I thought I had done this before in Python and it was working, but it seems that I suffer a severe case of MemoryCorruption...). And this will also teach me to *always* test my code before posting (I usually do...). <op> Sorry, my bad :( </op> <peter> Thanks for the correction </peter> -- bruno desthuilliers ruby -e "print '[EMAIL PROTECTED]'.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list