Other than the standard
/ operators; but what does these mean (
>>> 9+float(2) # addition 11.0 >>> 9-float(2) # subtraction 7.0 >>> 9*float(2) # multiplication 18.0 >>> 9/float(2) # division 4.5 >>> >>> 9**float(2) # This looks like a square, (i.e. power 2) 81.0 >>> 9**float(3) # So ** is equivalent to `math.pow(x,p)` ? 729.0
How about the
>>> 9^int(2) # What is `^` in `x^u` , it only allows `int` for `u` 11 >>> 9^int(3) 10 >>> 9^int(4) 13 >>> 9^int(5) 12 >>> 9^int(6) 15 >>> 9^int(7) 14 >>> 9^int(8) 1 >>> 9^int(9) 0 >>> 9^int(10) 3 >>> 9^int(11) 2 >>> 9^int(12) 5
x%m returns a normal remainder modulus, but only if
m < x, why is that so? What does
>>> 9%float(2) 1.0 >>> 9%float(3) 0.0 >>> 9%float(4) 1.0 >>> 9%float(5) 4.0 >>> 9%float(6) 3.0 >>> 9%float(7) 2.0 >>> 9%float(8) 1.0 >>> 9%float(9) 0.0 >>> 9%float(10) 9.0 >>> 9%float(11) 9.0 >>> 9%float(12) 9.0
How about the
// operator? what does it do?
>>> 9//float(2) 4.0 >>> 9//float(3) 3.0 >>> 9//float(4) 2.0 >>> 9//float(5) 1.0 >>> 9//float(6) 1.0 >>> 9//float(7) 1.0 >>> 9//float(8) 1.0 >>> 9//float(9) 1.0 >>> 9//float(1) 9.0 >>> 9//float(0.5) 18.0
^: exclusive-or (bitwise)
//: divide with integral result (discard remainder)
You can find all of those operators in the Python language reference, though you'll have to scroll around a bit to find them all. As other answers have said:
**operator does exponentiation.
a ** bis
araised to the
bpower. The same
**symbol is also used in function argument and calling notations, with a different meaning (passing and receiving arbitrary keyword arguments).
^operator does a binary xor.
a ^ bwill return a value with only the bits set in
bbut not both. This one is simple!
%operator is mostly to find the modulus of two integers.
a % breturns the remainder after dividing
b. Unlike the modulus operators in some other programming languages (such as C), in Python a modulus it will have the same sign as
b, rather than the same sign as
a. The same operator is also used for the "old" style of string formatting, so
a % bcan return a string if
ais a format string and
bis a value (or tuple of values) which can be inserted into
//operator does Python's version of integer division. Python's integer division is not exactly the same as the integer division offered by some other languages (like C), since it rounds towards negative infinity, rather than towards zero. Together with the modulus operator, you can say that
a == (a // b)*b + (a % b). In Python 2, floor division is the default behavior when you divide two integers (using the normal division operator
/). Since this can be unexpected (especially when you're not picky about what types of numbers you get as arguments to a function), Python 3 has changed to make "true" (floating point) division the norm for division that would be rounded off otherwise, and it will do "floor" division only when explicitly requested. (You can also get the new behavior in Python 2 by putting
from __future__ import divisionat the top of your files. I strongly recommend it!)