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'. One way to do this is to use functools.partial def fn(): def inner(tbl, x): return tbl[x] tbl={1:'A', 2:'B'} f1 = functools.partial(inner,tbl) # I want to make a frozen copy of the values of tbl in f1 tbl={1:'C', 2:'D'} f2 = functools.partial(inner,tbl) return (f1,f2) I am wondering if there is any other way to do this. -- http://mail.python.org/mailman/listinfo/python-list