Hi, I am reading the documentation of functools.partial (http:// docs.python.org/library/functools.html#functools.partial) and found the following 'reference implementation' of functools.partial.
def partial(func, *args, **keywords): def newfunc(*fargs, **fkeywords): newkeywords = keywords.copy() newkeywords.update(fkeywords) return func(*(args + fargs), **newkeywords) newfunc.func = func newfunc.args = args newfunc.keywords = keywords return newfunc I don't understand why the below 3 lines are needed: newfunc.func = func newfunc.args = args newfunc.keywords = keywords It is as if they are trying to prevent garbage collection, but I don't get why it is needed. As long as something holds reference to newfunc, because it in turn references keywords and args, nothing will be freed. If nothing is referencing newfunc, then everything should be freed. Thanks, GZ -- http://mail.python.org/mailman/listinfo/python-list