[SciPy-dev] Arrays as truth values?
cimrman3 at ntc.zcu.cz
Tue Nov 1 10:27:11 CST 2005
>>numarray doesn't permit using arrays as truth values since we figured
>>that it wasn't very clear what people expected to happen (this case is
>>a good illustration). I'd like to make the argument that scipy_core
>>also not permit arrays to be used as truth values (i.e., one should get
>>an exception if one tries to use it that way). I realize that this will
>>break some old code, but since incompatible changes are being made,
>>this is the time to make this sort of change. If left in, it is going
>>to bite people, often quietly.
> I agree it can bite people, but I'm concerned that arrays not having a
> truth value is an odd thing in Python --- you have to implement it by
> raising an error when __nonzero__ is called right?
> All other objects in Python have truth values (including its built-in
> array). My attitude is that its just better to teach people the proper
> use of truth values, then to break form with the rest of Python.
> I'm would definitely like to hear more opinions though. It would be
> very easy to simply raise and error when __nonzero__ is called.
Speaking about 'and' only, my problem with the current implementation of
it is that it _looks_ like working as '*' in some cases - 'b and c'
returns an array whose length is that of b and c (if the lengths are
equal, that is). I would not be against 'b and c' giving a single True
or False... But this also breaks the Python semantics of 'and'. The same
holds for other logical ops, of course.
So I don't know :-) - I can live with the current state.
More information about the Scipy-dev