lexical closures and python
Ignacio Vazquez-Abrams
ignacio at openservices.net
Thu Sep 6 02:45:36 EDT 2001
On Wed, 5 Sep 2001, John Beppu wrote:
> Hi,
>
> My understanding is that Python does not support lexical closures.
> I've also heard that it should not be expected to appear any time
> in the near future. Can anyone confirm or deny this?
Based on what I understand about lexical closures (which, BTW, to begin to
understand I had to go through LISP 101, Beginning LISP, LISP for Dummies,
LISP for Idiots, and LISP for Complete F*cking Morons... ;) ), no, Python does
not support them directly.
You can use a modified/perverted form of them by exploting the fact that
default values in functions are evaluated once only:
---
>>> def func2(a={}):
... print a
... if a=={}:
... a['foo']='bar'
... print a
...
>>> func2()
{}
{'foo': 'bar'}
>>> func2()
{'foo': 'bar'}
{'foo': 'bar'}
>>>
---
but I don't think that that's quite the same thing.
Other than lambdas, you can also mention the map(), reduce(), and filter()
functions, which as I may have heard somewhere do FP-like operations.
Also, I gotta ask: How the hell does JavaScript support them?
--
Ignacio Vazquez-Abrams <ignacio at openservices.net>
More information about the Python-list
mailing list