> Doesn't short-circuit evaluation refer specifically to the behavior > where arguments are only evaluated if they need to be? It's a very > useful feature, but not technically required for the "val = val or 1" > behavior to work.
Its essential. If Python always evaluated all parts of a boolean expression the return value would always be the last item. It's the fact that Python knows that if val is true then it doesn't need to evaluate the second term that causes it to return val rather than 1. > Also, returning on of its operands rather than a boolean is hardly a > quirk, since basically all dynamic languages do it ever since perl > made "val = val or 1" an idiom (at least, I think it was perl). Its a quirk in that it is not the intuitively expected behaviour. It's a boolean expression you would reasonably expect a true boolean result. I think you are right that Perl was the first popular language to do this, but Perl is a relatively recent arrival (abouit the same time as Python - 1988-90?) and it has become a feature of many recent dynamic languages. But most static languages still return true boolean values. Alan G. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor