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


Groups > comp.lang.python > #18660

Re: Nested Function Question

From 88888 Dihedral <dihedral88888@googlemail.com>
Newsgroups comp.lang.python
Subject Re: Nested Function Question
Date 2012-01-07 20:43 -0800
Organization http://groups.google.com
Message-ID <33260053.1203.1325997828352.JavaMail.geo-discussion-forums@prak33> (permalink)
References <14889cd9-f02b-4a81-9ccb-8fb8492e1091@n39g2000yqh.googlegroups.com>

Show all headers | View raw


GZ於 2012年1月7日星期六UTC+8上午5時46分16秒寫道:
> 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

This is used to produce a new function with some default parameters fixed
of  an old function that requires many parameters in the caller part. 

Back to comp.lang.python | Previous | NextPrevious 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