Macaulay2 » Documentation
Packages » Python » PythonObject » PythonObject * PythonObject » PythonObject *= Thing
next | previous | forward | backward | up | index | toc

PythonObject *= Thing -- augmented multiplication of Python objects

Description

Multiply two Python objects and assign the result to the first argument.

i1 : x = toPython 2

o1 = 2

o1 : PythonObject of class int
i2 : x *= toPython 3

o2 = 6

o2 : PythonObject of class int
i3 : x

o3 = 6

o3 : PythonObject of class int

If the right-hand side is a Macaulay2 object, then it is first converted to a Python object before multiplying.

i4 : x = toPython 4

o4 = 4

o4 : PythonObject of class int
i5 : x *= 5

o5 = 20

o5 : PythonObject of class int
i6 : x

o6 = 20

o6 : PythonObject of class int

If the Python class of x defines an __imul__ method for in-place multiplication, then it will be called. Otherwise, x and y will be multiplied in the usual way, creating a new Python object that is assigned back to x.

For example, Python lists support in-place multiplication by an integer (i.e., repetition). In the example below, x is modified directly, and no new object is created.

i7 : x = toPython {1, 2, 3}

o7 = [1, 2, 3]

o7 : PythonObject of class list
i8 : x *= 3

o8 = [1, 2, 3, 1, 2, 3, 1, 2, 3]

o8 : PythonObject of class list
i9 : x

o9 = [1, 2, 3, 1, 2, 3, 1, 2, 3]

o9 : PythonObject of class list

See also

Ways to use this method:


The source of this document is in Python/doc/arithmetic.m2:238:0.