У Python є три різні типи вбудованих чисел: цілі числа (int), числа з плаваючою комою (float) і комплексні числа (complex).
Дроби (fractions.Fraction) і десяткові числа (decimal.Decimal) також можна імпортувати зі стандартної бібліотеки.
Цілі числа, зокрема записані у шістнадцятковій (hex()), вісімковій (oct()) і двійковій (bin()) формі без десяткових знаків, також належать до типу int:
# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>
>>> -12
-12
Числа, що містять десяткову кому (з дробовою частиною або без неї), мають тип float:
>>> 3.45
3.45
>>> type(3.45)
<class 'float'>
Python повністю підтримує арифметику між цими різними типами чисел і перетворює вужчі числа відповідно до ширших, коли їх використовують із бінарними арифметичними операторами (+, -, *, /, // і %).
Усі числа (крім комплексних) підтримують усі арифметичні операції, які обчислюються згідно з пріоритетом операторів.
Підтримку математичних функцій (окрім + і -) для комплексних чисел можна знайти в модулі cmath.
Оператори додавання і віднімання поводяться так само, як у звичайній математиці.
Якщо один або кілька операндів є float, решту int також буде перетворено на float:
>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0
Як і у випадку з додаванням і відніманням, множення перетворює вужчі числа відповідно до ширших:
>>> 3 * 2
6
>>> 3 * 2.0
6.0
Ділення завжди повертає ints, навіть якщо в результаті виходить ціле число:
>>> 6/5
1.2
>>> 6/2
3.0
Якщо потрібен результат типу int, можна скористатися діленням націло, щоб відкинути дробову частину.
Ділення націло виконується за допомогою оператора //:
>>> 6//5
1
>>> 6//2
3
Оператор остачі (%) повертає остачу від ділення двох операндів:
# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0
# The result of % is 2 here, because 3 only goes into 5 once, with 2 left over
>>> 5 % 3
2
Інший спосіб поглянути на 5 % 3:
>>> whole_part = int(5/3)
1
>>> decimal_part = 5/3 - whole_part
0.6666666666666667
>>> whole_remainder = decimal_part * 3
2.0
Піднесення до степеня виконується за допомогою оператора **:
>>> 2 ** 3
8
>>> 4 ** 0.5
2
Числа можна перетворювати з int на floats і з floats на int за допомогою вбудованих функцій int() і float():
>>> int(3.45)
3
>>> float(3)
3.0
Python надає вбудовану функцію round(<number>, <decimal_places>), щоб округлити число з плаваючою комою до заданої кількості десяткових знаків.
Якщо кількість десяткових знаків не вказано, число округлюється до найближчого цілого і функція поверне floats:
>>> round(3.1415926535, 2)
3.14
>>> round(3.1415926535)
3
У Python можна використовувати дужки, щоб групувати вирази. Це корисно, коли потрібно змінити типовий порядок виконання операцій.
>>> 2 + 3 * 4
14
>>> (2 + 3) * 4
20
Python дотримується правила PEMDAS для пріоритету операторів.
Це означає, що обчислення всередині () мають найвищий пріоритет, далі йдуть **, потім *, /, //, %, + і -:
>>> 2 + 3 - 4 * 4
-11
>>> (2 + 3 - 4) * 4
4
# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 256, then 2 + 768
>>> 2 + 3 * 4 ** 4
770
Цілі числа в Python мають довільну точність: кількість цифр обмежує лише доступна памʼять хост-системи.
Числа з плаваючою комою зазвичай реалізовано типом double у C (точність 15 десяткових знаків), але їхнє подання залежить від хост-системи.
Комплексні числа мають частини real і imaginary, і обидві подано числами з плаваючою комою.
Докладніше про проблеми й обмеження арифметики з плаваючою комою в різних мовах програмування можна прочитати на 0.30000000000000004.com і в The Python Tutorial.