[Numpy-discussion] logical_and operator, &&, is missing?
robert.kern at gmail.com
Sat Jun 24 15:43:58 CDT 2006
Eric Firing wrote:
> Robert Kern wrote:
>> Eric Firing wrote:
>>> It seems that the logical operators || and &&, corresponding to
>>> logical_or and logical_and are missing; one can do
>>> z = logical_and(x,y)
>>> but not
>>> z = x && y
>>> Is there an inherent reason, or is this a bug?
>> Python does not have a && operator. It has an "and" keyword, but that cannot be
>> overridden. If you know x and y to be boolean arrays, & and | work fine.
> Out of curiosity, is there a simple explanation as to why "and" cannot
> be overridden but operators like "&" can? Is it a fundamental
> distinction between operators and keywords?
Sort of. "and" and "or" short-circuit, that is they stop evaluating as soon as
the right value to return is unambiguous.
In : def f():
...: print "Shouldn't be here."
In : False and f()
In : True or f()
Consequently, they must yield True and False only.
> In any case, it sounds like we are indeed stuck with an unfortunate wart
> on numpy, unless some changes in Python can be made. Maybe for
> The NumPy for Matlab users wiki is misleading in this area; I will try
> to fix it.
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Numpy-discussion