Michael Hoffman wrote:
Paul Miller wrote:

> I see lambda is "going away", so I want to use something that will be > around for awhile.
>
> All I want to do is provide an "inline function" as an argument to
> another function.


That's what lambda does. But it's going away, you'll have to use def when it does, unless the language designers come up with something better.

For example, let's say I have a function which binds a key to a function call. I want to do something "simple" in this function call, and I have a lot of bindings, so I don't want to have a ton of tiny little functions scattered around:

    def setVarTo1():
        foo.var = 1
    def setVarTo2():
        foo.var = 2

    bind('a', setVarTo1)
    bind('b', setVarTo2)


If a lot of the bindings are actually setting variables, you could do something like this:

def attrsetter(obj, name, 1):
    def _return_func(value):
        return setattr(obj, name, value)

return _return_func

I think you meant to write something like this:

def attrsetter(obj, name, value):
    def _return_func():
        return setattr(obj, name, value)
    return _return_func

Or, if you want to delay binding of the "value" parameter:

def attrsetter(obj, name):
    def _return_func(value):
        return setattr(obj, name, value)
    return _return_func

Cheers,
Dave
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to