On Sep 21, 2014, at 5:19 PM, Eric Firing <efir...@hawaii.edu> wrote:

> I think what you are missing is that the standard Python idiom for this 
> use case is "if self._some_array is None:".  This will continue to work, 
> regardless of whether the object being checked is an ndarray or any 
> other Python object.


That's an alternative, but I think it's a subtle distinction that will be lost 
on many users. I still think that this is something that can easily trip up 
many people; it's not clear from looking at the code that this is the behavior; 
it's "hidden". At the very least, I strongly suggest that the warning point 
this out, e.g.

"FutureWarning: comparison to `None` will result in an elementwise object 
comparison in the future; use  'value is None' as an alternative."

Assume:

a = np.array([1, 2, 3, 4])
b = np.array([None, None, None, None])

What is the result of "a == None"? Is it "np.array([False, False, False, 
False])"?

What about the second case? Is the result of "b == None" -> np.array([True, 
True, True, True])? If so, then

if (b == None):
    ...

will always evaluate to "True" if b is "None" or *any* Numpy array, and that's 
clearly unexpected behavior.

On Sep 21, 2014, at 9:30 PM, Benjamin Root <ben.r...@ou.edu> wrote:

> That being said, I do wonder about related situations where the lhs of the 
> equal sign might be an array, or it might be a None and you are comparing 
> against another numpy array. In those situations, you aren't trying to 
> compare against None, you are just checking if two objects are equivalent.


Right. With this change, using "==" with numpy arrays now sometimes means "are 
these equivalent" and other times "element-wise comparison". The potential for 
inadvertent bugs is far greater than what convenience this redefinition of a 
very basic operator might offer. Any scenario where

(a == b) != (b == a)

is asking for trouble.

Cheers,
Demitri

_________________________________________
Demitri Muna

Department of Astronomy
An Ohio State University

http://trillianverse.org
http://scicoder.org



_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to