Raymond Hettinger wrote: > I propose that in Py3.0, the "and" and "or" operators be simplified to > always return a Boolean value instead of returning the last evaluated > argument.
Please no. I find things like: def __cmp__(self, other): return (cmp(self.a, other.a) or cmp(self.b, other.b) or cmp(self.c, other.c)) somehow elegant... But I don't know how this can be useful for "and" however. > 1) The construct can be error-prone. When an error occurs it can be > invisible to the person who wrote it. I got bitten in published code > that had survived testing and code review: > > def real(self): > 'Return a vector with the real part of each input element' > # do not convert integer inputs to floats > return self.map(lambda z: type(z)==types.ComplexType and z.real or > z) As others pointed, if lambda is to be possibly removed in py3.0, it would be better to have an example not using it. FWIW, I've never had a problem with that, but however I use the feature... Quite the opposite actually, I even though about overriding and and or to build event-driving expression, which I can't... well, forget about that;) > 2) When going back and forth between languages, it is easy to forget > that only Python returns something other than a boolean. Well, there's a lot of things I miss from Python when going back and forth between languages. You need a better argument to convince me to also miss that one in Python;) I think it's not reasonable to remove the feature without adding a ?: syntax. I personally like the status quo. Regards, Nicolas _______________________________________________ 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