Phillip J. Eby wrote:
> As has already been pointed out, this
>
> 1) adds function call overhead,
> 2) doesn't allow changes to variables in the containing function, and
> 3) even if we had a rebinding operator for free variables, we would have
> the overhead of creating closures.
>
> The lambda syntax does nothing to fix any of these problems, and you can
> already use a mapping of closures if you are so inclined. However, you'll
> probably find that the cost of creating the dictionary of closures exceeds
> the cost of a naive sequential search using if/elif.
This brings me back to my earlier point - I wonder if it would make
sense for Python to have a non-closure form of lambda - essentially an
old-fashioned subroutine:
def foo( x ):
x = 0
sub bar: # Arguments are not allowed, since they create a scope
x = y # Writes over the x defined in 'foo'
bar()
The idea is that 'bar' would share the same scope as 'foo'. To keep the
subroutine lightweight (i.e. just a single jump and return instruction
in the virtual machine) arguments would not be allowed.
-- Talin
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com