Common LISP-style closures with Python

88888 Dihedral dihedral88888 at googlemail.com
Fri Feb 10 02:55:23 EST 2012


在 2012年2月4日星期六UTC+8上午8时27分56秒,Antti J Ylikoski写道:
> In Python textbooks that I have read, it is usually not mentioned that
> we can very easily program Common LISP-style closures with Python.  It
> is done as follows:
> 
> -------------------------------------
> 
> # Make a Common LISP-like closure with Python.
> #
> # Antti J Ylikoski 02-03-2012.
> 
> def f1():
>      n = 0
>      def f2():
>          nonlocal n
>          n += 1
>          return n
>      return f2
> 
> -------------------------------------
> 
> and now we can do:
> 
> -------------------------------------
> 
>  >>>
>  >>> a=f1()
>  >>> b=f1()
>  >>> a()
> 1
>  >>> a()
> 2
>  >>> a()
> 3
>  >>> a()
> 4
>  >>> b()
> 1
>  >>> b()
> 2
>  >>> a()
> 5
>  >>> b()
> 3
>  >>> b()
> 4
>  >>>
> 
> -------------------------------------
> 
> i. e. we can have several functions with private local states which
> are kept between function calls, in other words we can have Common
> LISP-like closures.
> 
> yours, Antti J Ylikoski
> Helsinki, Finland, the EU

We are not in the 1990's now. A descent  CAD or internet application now should be able to support users with at least one or more   script
languages  easily. Whether it's javascript or java or flash in the browser-based applications, or go, python in the google desktop API, 
commercial SW applications to be able to evolve in the long run  are not jobs from the publishers and the original writers of the SW packages only.

I don't want to include a big fat compiler in my software, 
what else can I do ?
 
 LISP is too fat, too.



More information about the Python-list mailing list