> I guess that's inevitable (given lambda's existence... and human > nature;-) and about on the same plane as another hatefully redundant > construct I find myself having to beat upon over and over in code > reviews: > > if <expression>: > result = True > else: > result = False > return result > > vs the simple "return <expression>" [[or bool(<expression>) if it's > actually mandatory to return a bool and <expression> can't be relied > upon to produce one]].
Indeed, I think these are the same phenomenons. If lambdas where not available, people would, instead of writing Thread(target = lambda: foo()) write def target(): foo() Thread(target = target) Your example above demonstrates that the boolean type is a concept that is *very* difficult to grasp (not the notion of boolean expressions, which are easy to understand - it's the boolean *type* that is difficult, i.e. that a boolean expression can be used not just in conditional statements, but also assigned to variables, returned, etc.). When I ask students in the exam to rewrite your code above (and assuming they use Java), so that "it is a single line", they typically write return <expression> ? true : false; Likewise, apparently, the notion of generic callables is difficult to understand. Unless you have written it yourself, you won't recognize an expression as callable. Regards, Martin _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com