On May 8, 6:11 pm, Duncan Booth <[EMAIL PROTECTED]> wrote: > > No, no, no, no, no! >
Geez. Go easy. > You have got it entirely wrong here. Your XOR function simply returns a > function which gives you the result of xoring the parameters AT THE TIME > WHEN YOU ORIGINALLY CREATED IT. I'm guessing that you had already set > cream and icecream (otherwise the call to XOR would have thrown an > exception) and at leas one was true. Try setting them both False at the > beginning: > > >>> cream = False > >>> icecream = False > >>> topping = XOR( cream, icecream) > >>> cream = True > >>> icecream = False > >>> print topping() > > False > Ok. I understand this better now. I did say I found the documentation rather terse on this. > Using a lambda was a completely pointless exercise here, you could have > just returned the result directly: If I try out a new language, I try to exercise those parts of the language that are new to me. Now I saw lambdas, an interesting structure I hadn't seen before. So I tried them out. I get to learn a little at the same time as scripting. That was the "point". I only get to optimise my use of a language by trying out various corners of it. > def TFF(x,y,z) : > return x and not y and not z > > AddOnly = TFF( options.AddAction, options.ReplaceAction, > options.DeleteAction ) > DeleteOnly = TFF( options.DeleteAction, options.AddAction, > options.ReplaceAction ) > ReplaceOnly = TFF( options.ReplaceAction, options.AddAction, > options.DeleteAction ) > > if not (DeleteOnly or AddOnly or ReplaceOnly): > print "Error: Exactly one of [ --add | --replace | --delete ] > allowed. " > parser.print_help() > exit > > which boils down to: > > if (options.AddAction + options.ReplaceAction + > options.DeleteAction) != 1: > print "Error: ..." Indeed, there are many ways this could be done. Some are more concise, some are more efficient. As I said, I did it the way I did it to try out lambdas. Your way achieves the result, rather elegantly I think, but teaches me nothing about using lambdas. Pardon my tetchiness, but it is a little hard to receive such blunt and inflexible replies to my posts. Both the responses offer lambda free alternatives. That's fine, and given the terse documentation and problems that I had understanding them, I would agree. So what applications are lambdas suited to? I think the parameterised function model is one. What else? -- http://mail.python.org/mailman/listinfo/python-list