Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #18660
| 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> |
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 | Next — Previous in thread | Find similar | Unroll 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