Re: self modifying code
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.python archive

Re: self modifying code

From: John J. Lee <jjl@pobox.com>
Date: Sat Apr 29 2006 - 20:33:59 CEST

Robin Becker <robin@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
Received on Mon May 1 00:44:36 2006