On 12/08/2014 03:58 PM, Ben Finney wrote:
memilanuk <memila...@gmail.com> writes:
What I'm having trouble finding a concrete answer to is the difference
between:
lambda: some_expr
This creates a new function which expects zero parameters. The function,
when called, will return the value of ‘some_expr’.
lambda x: some_expr
This creates a new function which expects one positional parameter named
‘x’. The function, when called, will return the value of ‘some_expr’.
so in the first example in my original post:
...
lambda: update_label2('A', 100)
would this work the same? It looks as though it'd be passing the same
two parameters to the same function...
lambda: 'A', 100: update_label2()
Also, in my second example:
class MyText(Text):
def __init__(self, master, **kw):
apply(Text.__init__, (self, master), kw)
self.bind("<Return>", lambda e: "break")
(from the page @
http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm, if anyone
cares)
I'm kind of missing what 'e' is and where its defined and what it's
supposed to be passing to "break"...? The whole bind method for classes
and instances is a wee bit above my pay grade right about now; but I
happened to stumble upon this example when I went looking for more info
on lambda :/
lambda x=some_value: some_expr
This creates a new function which expects one parameter named ‘x’, which
parameter has a default value of ‘some_value’. The function, when
called, will return the value of ‘some_expr’.
I was reading in 'Programming Python 4th ed' by Lutz and he talks about
something to do with default values vs. enclosing scopes... that
something like:
lambda x=x: some_expr
when evaluated inside a function loop to create buttons, etc., causes
'x' to be evaluated as the default value at the function creation time,
vs. when the function is actually called. Do I have that more or less
correct?
TIA,
Monte
--
Shiny! Let's be bad guys.
Reach me @ memilanuk (at) gmail dot com
--
https://mail.python.org/mailman/listinfo/python-list