99% uptime means 7 hours of outage each month.
Hey pips!
Just a quickie today, we’re going to look at the builtin math module. As part of the standard Python library, it provides access to common mathematical constants and functions. Let’s start by importing it:
import mathNow we can access its members using dot notation:
>>> math.pi
3.141592654
>>> math.e
2.718281828Most of the functions you learn in maths are here, so there’s no need to define them yourself. What’s more, the ones Python provides are implemented with C code, which makes them blazingly faster than anything you could write in Python!
>>> math.log(2) # defaults to base e
0.6931471805599453
>>> math.factorial(6)
720If floating-point comparison has ever given you a headache, you’ll want isclose():
>>> t = 0.1 + 0.2
>>> t
0.30000000000000004
>>> math.isclose(t, 0.3)
TrueIf you’re up to anything rendering-related, like in game development, the trigonometric functions will come in handy:
>>> math.sin(0)
0
>>> math.cos(0)
1Bear in mind these use radians – luckily, math abstracts the conversion for you:
>>> math.cos(math.radians(90))
0And dist() will definitely be convenient for doing Pythagoras!
>>> p = (1, 3)
>>> q = (-2, —1)
# instead of this...
>>> ((q[0] - p[0]) ** 2
+ (q[1] - p[1]) ** 2) ** 0.5
5.0
# just use math!
>>> math.dist(p, q)
5.0Something that comes up more often than you’d think is needing to extract the sign of a number. You can do this with a conditional:
def sign(x):
return -1 if x < 0 else 1Or with some absolute value trickery:
def sign(x):
return abs(x) / xBut did you know there’s the copysign() function?
>>> math.copysign(1, -8)
-1
>>> math.copysign(1, 5)
1It copies the sign of the 2nd number and applies it to the magnitude of the 1st. So of course, we could also pass in numbers others than 1:
>>> math.copysign(10, -2)
-10
>>> math.copysign(-9, 3)
9
>>> math.copysign(-5, -120)
-5Python comes with plenty of useful libraries like math – which is why it’s often called a “batteries included” language!
It’s worth taking a quick glance through the docs↗ for math – you might find a function that simplifies something you’re already doing!
For more advanced and heavyweight maths, we use the NumPy↗ library, an external framework written in C.
