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