On 02/06/2013 08:41 AM, Charles R Harris wrote: > > > On Tue, Feb 5, 2013 at 11:50 PM, Jason Grout > <jason-s...@creativetrax.com <mailto:jason-s...@creativetrax.com>> wrote: > > On 2/6/13 12:46 AM, Charles R Harris wrote: > > if we decide to do so > > I should mention that we don't really depend on either behavior (we > probably should have a better doctest testing for an array of None > values anyway), but we noticed the oddity and thought we ought to > mention it. So it doesn't matter to us which way the decision goes. > > > More Python craziness > > In [6]: print None or 0 > 0 > > In [7]: print 0 or None > None
To me this seems natural and is just how Python works? I think the rule for "or" is simply "evaluate __nonzero__ of left operand, if it is False, return right operand". The reason is so that you can use it like this: x = get_foo() or get_bar() # if get_foo() returns None # use result of get_bar or def f(x=None): x = x or create_default_x() ... I guess that after the "a if expr else b" was introduced this has become less common. Dag Sverre > > Numpy any is consistent with python when considered as logical_or.reduce > > In [13]: print array([0, None]).any() > None > > In [14]: print array([None, 0]).any() > 0 > > This appears to be an __ror__, __or__ inconsistency in python. Note that > None possesses neither of those operators. > > Chuck > > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion