self modifying code
John J. Lee
jjl at pobox.com
Sat Apr 29 14:33:59 EDT 2006
Robin Becker <robin at NOSPAMreportlab.com> writes:
> When young I was warned repeatedly by more knowledgeable folk that self
> modifying code was dangerous.
>
> Is the following idiom dangerous or unpythonic?
>
> def func(a):
> global func, data
> data = somethingcomplexandcostly()
> def func(a):
> return simple(data,a)
> return func(a)
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 ;-)
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()
John
More information about the Python-list
mailing list