GZ wrote:
Hi All,
I am looking at the following code:
def fn():
def inner(x):
return tbl[x]
tbl={1:'A', 2:'B'}
f1 = inner # I want to make a frozen copy of the values of tbl
in f1
tbl={1:'C', 2:'D'}
f2 = inner
return (f1,f2)
f1,f2 = fn()
f1(1) # output C
f2(1) # output C
What I want is for f1 to make a frozen copy of tbl at the time f1 is
made and f2 to make another frozen copy of tbl at the time f2 is made.
In other words, I want f1(1)=='A' and f2(1)=='C'.
something like
def makeInner(a_tbl):
def inner(x):
return a_tbl[x]
return inner
def fn():
tbl = {1:'A', 2:'B'}
f1 = makeInner(tbl)
tbl = {1:'C', 2:'D'}
f2 = makeInner(tbl)
return f1,f2
f1,f2 = fn()
In [4]: print f1(1)
A
In [5]: print f2(1)
C
JM
PS : smelling code anyway :o)
--
http://mail.python.org/mailman/listinfo/python-list