On 7 Jul 2005 15:46:23 GMT, Duncan Booth <[EMAIL PROTECTED]> wrote: >Steven D'Aprano wrote: > >> Put it this way: whenever I see a two-line def as above, I can't help >> feeling that it is a waste of a def. ("Somebody went to all the trouble >> to define a function for *that*?") Yet I would never think the same about >> a lambda -- lambdas just feel like they should be light-weight. > >Obviously we think differently there. I don't see why lambdas are any >different than single expression functions. I certainly don't think of them >as lighter weight; they take just as long to call; and they involve just as >much stack setup/tear down. On the other hand I don't consider functions as >heavyweight, I'm happy to define short helper functions anywhere I think it >makes the code more expressive. > >> Am I just weird? > >No, just different[*]. There's nothing wrong with different. > >[*] conclusion based entirely on your postings here. I have no evidence >beyond that. > I think def is a form of assignment, with the target binding name specified inside the expression syntax instead of to the left of an '=' as usual. I.e.,
def f(args): suite is like f = def(args): suite except that I can't use an arbitrary left-hand side in the assignment, such as MyClass.method = def(self, args): suite or somedict['foo'] = def(self, args): suite Personally, I think def(args): suite ought to be allowed as an expression that you could put in parentheses like any other expression if you need/want to write it with multiple lines. Obviously this could both replace and expand the functionality of lambda ;-) Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list