[Numpy-discussion] Regression: in-place operations (possibly intentional)
chris.barker at noaa.gov
Fri Sep 21 12:24:20 EDT 2012
On Thu, Sep 20, 2012 at 2:48 PM, Nathaniel Smith <njs at pobox.com> wrote:
> because a += b
> really should be the same as a = a + b.
I don't think that's the case - the inplace operator should be (and
are) more than syntactic sugar -- they have a different meaning and
use (in fact, I think they should't work at all for immutable, sbut i
guess the common increment-a-counter use was too good to pass up)
in the numpy case:
a = a + b
means "make a new array, from the result of adding a and b"
a += b
means "change a in place by adding b to it"
In the first case, I'd expect the type of the result to be determined
by both a and b -- casting rules.
In the second case, a should certainly not be a different object, and
should not have a new data buffer, therefor should not change type.
Whereas the general case, there is no assumption that with:
a = b+c
a is the same type as either b or c, but certainly not the same object.
Christopher Barker, Ph.D.
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
More information about the NumPy-Discussion