Anonymus functions revisited

George Sakkis gsakkis at rutgers.edu
Wed Mar 23 00:15:25 CET 2005


"Ron" <radam2 at tampabay.rr.com> wrote:
> On Tue, 22 Mar 2005 21:56:57 GMT, Ron <radam2 at tampabay.rr.com> wrote:
>
> >Why should a function not create a local varable of an argument if the
> >varable doesn't exist and a default value is given?
>
> ok... thought it out better. :)
>
> Getting a default into a function isn't the problem. Returning the
> value to a varable that doesn't exist is.
>
> So then the question is ... is there a way for a function to create a
> varable in it's parents namespace that persists after the function is
> done?

Yeap.. a simple one-liner can do the trick:

def makeVars(**nameVals):
    sys._getframe(1).f_locals.update(nameVals)

try: b
except NameError: print "Before makeVars: NameError"
else: print "Before makeVars: Not NameError"
makeVars(b=2)
try: b
except NameError: print "After makeVars: NameError"
else: print "After makeVars: Not NameError"

George





More information about the Python-list mailing list