[Python-Dev] PEP 340: Only for try/finally?
Phillip J. Eby
pje at telecommunity.com
Wed May 4 00:11:40 CEST 2005
At 11:54 PM 5/3/05 +0200, BJörn Lindqvist wrote:
>It seems like the possibilities are endless. Maybe too endless?
>Because this new feature is so similar to anonymous functions, but is
>not quite anonymous functions, so why not introduce anonymous
>functions instead, that could make all the things block can, and more?
>But as I said, I'm misunderstanding something.
Anonymous functions can't rebind variables in their enclosing function. It
could be argued that it's better to fix this, rather than inventing a new
macro-like facility, but I don't know how such a rebinding facility could
preserve readability as well as PEP 340 does.
Also, many of your examples are indeed improvements over calling a function
that takes a function. The block syntax provides a guarantee that the
block will be executed immediately or not at all. Once you are past the
block suite in the code, you know it will not be re-executed, because no
reference to it is ever held by the called function. You do not have this
same guarantee when you see a function-taking-function being invoked. So,
a block suite tells you that the control flow is more-or-less linear,
whereas a function definition raises the question of *when* that function
will be executed, and whether you have exhaustive knowledge of the possible
places from which it may be called.
More information about the Python-Dev
mailing list