John J. Lee wrote: > 1. I don't think most people would call that "self-modifying code". I > won't try defining that term precisely because I know you'll just > pick holes in my definition ;-)
Don't really disagree about the rewriting code, but the function does re-define itself. > 2. The use of global func is just plain weird :-) > > 3. Peter Otten's version is OK, but how about this, using a closure > instead of globals (UNTESTED) > > def make_func(): > namespace = object() > namespace.data = None > def func(a): > if namespace.data is None: > namespace.data = somethingcomplexandcostly() > return simple(namespace.data, a) > return func > func = make_func() > ....... the inner function is almost precisely what I started with, except I used the global namespace. However, it keeps the test in side the function which costs about 1%. -- Robin Becker -- http://mail.python.org/mailman/listinfo/python-list