Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #18623

Re: Nested Function Question

References <14889cd9-f02b-4a81-9ccb-8fb8492e1091@n39g2000yqh.googlegroups.com>
From Ian Kelly <ian.g.kelly@gmail.com>
Date 2012-01-06 15:04 -0700
Subject Re: Nested Function Question
Newsgroups comp.lang.python
Message-ID <mailman.4497.1325887492.27778.python-list@python.org> (permalink)

Show all headers | View raw


On Fri, Jan 6, 2012 at 2:46 PM, GZ <zyzhu2000@gmail.com> wrote:
> 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.

They exist for introspection.  The partial object has to store the
function and arguments it was passed so that it can call it later, so
as long as they're being stored anyway, why not make them visible?

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Nested Function Question GZ <zyzhu2000@gmail.com> - 2012-01-06 13:46 -0800
  Re: Nested Function Question Ian Kelly <ian.g.kelly@gmail.com> - 2012-01-06 15:04 -0700
  Re: Nested Function Question David Robinow <drobinow@gmail.com> - 2012-01-07 10:18 -0500
  Re: Nested Function Question 88888 Dihedral <dihedral88888@googlemail.com> - 2012-01-07 20:43 -0800

csiph-web