Итак, давайте погрузимся в числовые типы данных Python.
Как мы уже знаем число в Python может иметь тип int (целое число), float (число с плавающей запятой) или даже complex (комплексное число).
Тип данных long в Python 3.x более не поддерживается.
Приступим к изучению этих типов данных.
Числовые типы данных в Python
Число — это арифметическая единица, которая позволяет нам что-то измерять или подсчитывать.
Python дает возможность хранить целые числа, числа с плавающей запятой и комплексные числа, а также позволяет выполнять преобразование между ними.
Тип данных указывать нет необходимости, так как Python – это язык с динамической типизацией.
Тип данных None означает отсутствие значения.
Тип данных int в Python
Язык Python позволяет хранить целые числа со знаком.
a = 7 a # Результат: # 7
Значения данного типа могут быть любой длины, единственным ограничением является размер доступной памяти.
a = 9999999999999999999999999999999999999 a # Результат: # 9999999999999999999999999999999999999
В языке Python есть две встроенные функции, при помощи которых можно проверить тип данных.

Функция type()
Данная функция принимает один аргумент и возвращает класс, к которому принадлежит этот аргумент.
a = 9999999999999999999999999999999999999 type(a) # Результат: # <class ‘int’>
Функция isinstance()
Эта функция принимает два аргумента. Первая — это некая конструкция Python (например, переменная или список), чью принадлежность к определенному классу мы хотим проверить, а вторая — это собственно сам этот класс.
Она возвращает True
или False
в зависимости от того, принадлежит ли указанная конструкция к данному классу.
Предположим, мы хотим проверить принадлежит ли переменная a
к классу bool
. Для этого можно воспользоваться следующим кодом:
isinstance(a, bool) # Результат: # False
Так как переменная a
содержит значения класса int, функция возвращает значение False
.
Экспоненциальное представление числа в Python
Экспоненциальное представление числа можно записать при помощи буквы e
, вставив ее между мантиссой числа и показателем степени.
print(2e5) # Результат: # 200000.0
Имейте ввиду, что e
означает степень 10
, то есть данное число имеет вид 2 * 10 ** 5
. Напомним, что для возведения в степень в Python используется оператор **
.
Тип данных float
в Python
В языке Python реализована поддержка чисел с плавающей запятой. Например, тип int
не может хранить значение известной математической константы pi
, а вот тип float
как раз может:
from math import pi pi # Результат: # 3.141592653589793 type(pi) # Результат: # <class ‘float’>
Значения данного типа являются точными только до 15 знака после запятой, а дальше происходит округление.
a = 1.1111111111111111119 a # Результат: # 1.1111111111111112
Заметим также, что результат деления автоматически получает тип float.
2 / 2 # Результат: # 1.0
Комплексные числа в Python
Комплексное число состоит из действительной и мнимой части. В Python оно представляется в виде a + bj
.
a = 2 + 3j a # Результат: # (2+3j)
Коэффициент при мнимой части комплексного числа
В вышеприведенном примере 2
это действительная часть числа, а 3
его мнимая часть.
Однако, в отличии от математической литературы для выделения мнимой части вы не можете использовать букву i.
a = 2 + 3i
Результат:
SyntaxError: invalid syntax
Также перед мнимой частью обязательно указывать коэффициент.
a = 2 + j
Результат:
Traceback (most recent call last):File “<pyshell#33>”, line 1, in <module> a=2+j NameError: name ‘j’ is not defined
В данном случае коэффициентом при мнимой части является число 1
.
a =2 + 1j a # Результат: # (2+1j)
Операции с комплексными числами
Разумеется, с комплексными числами можно выполнять все основные операции.
a = 2 + 3j b = 2 + 5j a + b # Результат: # (4+8j) a *= 2 a # Результат: # (4+6j)
Представление чисел в двоичном, восьмеричном и шестнадцатеричном виде в Python
Довольно часто программистам приходится иметь дело с числами, которые представлены не в десятеричной системе счисления. Для обозначения таких числе можно использовать соответствующие префиксы.
Система счисления | Префикс |
двоичная | 0b или 0B |
восьмеричная | 0o или 0O |
шестнадцатеричная | 0x или 0X |
Двоичные числа в Python
Если вы хотите записать двоичное число, используйте префикс 0b или 0B. Например, мы знаем, что двоичное представление для числа 7 равно 111.
print(0b111) # Результат: # 7
Также к двоичным числам можно применять функции преобразования.
int(0b10) # Результат: # 2 float(0B10) # Результат: # 8
Восьмеричные числа в Python
Для восьмеричных чисел в Python используется префикс 0o или 0O.
print(0O10) # Результат: # 8
А вот нижеследующий код вызовет ошибку. Дело в том, что в восьмеричной системе счисления цифра 8 не используется. Там используются цифры с 0 до 7.
print(0O8)
Результат:
SyntaxError: invalid token
Шестнадцатеричные числа в Python
Для представления чисел в шестнадцатеричной системе счисления используются цифры от 0 до 9 и буквы латинского алфавита от A до F. Также для данного представления используется префикс 0x или 0X.
print(0xFF) # Результат: # 255 print(0xFE) # Результат: # 254
Функции преобразования числовых типов в Python
Зачастую интерпретатор Python выполняет преобразования типов сам по мере необходимости, но также их всегда можно сделать и в явном виде.
Существуют функции, с помощью которых можно конвертировать один числовой вид данных в другой.

Функция int()
При помощи функции int() можно преобразовать другой числовой тип в тип int (целые числа).
Также с помощью данной функции можно преобразовывать и нечисловые типы данных в тип int. Но в настоящей статье мы сосредоточимся только на числовых типах данных.
int(7) # Результат: # 7 int(7.7) # Результат: # 7
Как можно заметить, при преобразовании типа float (числа с плавающей запятой), функция int() не округляет значение числа, а просто усекает дробную часть.
Однако, комплексные числа преобразовать к целому типу (int) нельзя.
int(2 + 3j)
Результат:
Traceback (most recent call last):File “<pyshell#22>”, line 1, in <module> int(2+3j) TypeError: can’t convert complex to int
int(3j)
Результат:
Traceback (most recent call last):File “<pyshell#23>”, line 1, in <module> int(3j) TypeError: can’t convert complex to int
Мы также можем применить эту функцию к представлениям, отличным от десятичных, то есть к двоичным, восьмеричным и шестнадцатеричным.
int(0b10) # Результат: # 2 int(0xF) # Результат: # 15
Функция float()
Данная функция может преобразовывать другие числовые типы данных во float (тип данных с плавающей запятой).
float(110) # Результат: # 110.0
Как и функция int(),
функция float()
не может преобразовывать комплексные числа.
float(3j)
Результат:
Traceback (most recent call last):File “<pyshell#26>”, line 1, in <module> float(3j) TypeError: can’t convert complex to float
float(0o10) # Результат: # 8.0
А вот числа в восьмеричном представлении она может принимать.
Функция complex()
Эта функция преобразует числовые типы данных в тип complex.
complex(2) # Результат: # (2+0j) complex(2.3) # Результат: # (2.3+0j) complex(2+3.0j) # Результат: # (2+3j)
Функция bin()
Данная функция представляет число в двоичной системе счисления.
bin(2) # Результат: # ‘0b10’
Однако данная функция не может принимать в качестве аргументов числа типа float
или complex
. То же самое относится и к функциям oct()
и hex()
, которые мы рассмотрим ниже.
bin(2.3)
Результат:
Traceback (most recent call last):File “<pyshell#49>”, line 1, in <module> bin(2.3) TypeError: ‘float’ object cannot be interpreted as an integer
bin(2+3j)
Результат:
Traceback (most recent call last):File “<pyshell#50>”, line 1, in <module> bin(2+3j) TypeError: ‘complex’ object cannot be interpreted as an integer
Функция oct()
Данная функция возвращает число в восьмеричной системе счисления.
oct(8) # Результат: # ‘0o10’
Мы с вами знаем, что 8.0
это тоже самое что и 8
, но в Python это не так. Эти числа разных типов данных, float и int соответственно. Таким образом, число 8.0
не может быть преобразовано восьмеричное представление функцией oct()
.
oct(8.0)
Результат:
Traceback (most recent call last):File “<pyshell#59>”, line 1, in <module> oct(8.0) TypeError: ‘float’ object cannot be interpreted as an integer
Функция hex()
Данная функция преобразует число в шестнадцатеричную систему счисления.
hex(255) # Результат: # ‘0xff’ hex(0) # Результат: # ‘0x0’
Модуль Decimal в Python
Давайте попробуем в Python сложить 1.1
и 2.2
, а затем сравнить результат с числом 3.3
.
(1.1 + 2.2) == 3.3 # Результат: # False
Почему же результат False
? Давайте выведем на экран результат суммирования.
print(1.1+2.2) # Результат: # 3.3000000000000003
Почему же такое происходит? Это не является ошибкой Python, а связано с аппаратными ограничениями при хранении чисел с плавающей запятой (типа float).
Компьютер хранит десятичные дроби в двоичном виде, а точно это делать невозможно.
Рассмотрим еще один пример:
1 / 3 # Результат: # 0.3333333333333333
Когда мы делим 1
на 3
, он возвращает не полное значение, которое является бесконечной дробью 0,33333333333333333(3). Python предлагает решение данной проблемы.
В нем есть модуль decimal, при помощи которого можно задать точность. Подробно этот модуль мы изучим в других статьях.
import decimal print(decimal.Decimal(0.1)) # Результат: # 0.1000000000000000055511151231257827021181583404541015625
Видите, что произошло? Функция Decimal()
устанавливает заданную точность и таким образом можно сравнивать числа с плавающей запятой.
Модуль Fraction в Python
В Python есть еще один удобный модуль, предназначенный для работы с рациональными дробями.
Функция Fraction()
возвращает значение в виде числителя и знаменателя.
from fractions import Fraction print(Fraction(1.5)) # Результат: # 3/2
Эта функция может также принимать и два аргумента.
print(Fraction(1,3)) # Результат: # 1/3
Модуль Math в Python
Это еще один важный модуль в Python.
В нем реализованы все самые важные математические функции, такие как экспонента, факториал, логарифм и различные тригонометрические функции.
import math math.factorial(5) # Результат: # 120 math.exp(3) # Результат: # 20.085536923187668 math.tan(90) # Результат: # -1.995200412208242
На этом мы закончим изучение числовых типов данных в данной статье.
Заключение
В данной статье мы узнали о числовых типах данных Python.
Мы рассмотрели целые числа, числа с плавающей запятой и комплексные числа. Мы также рассмотрели, как записывать числа в двоичном, восьмеричном и шестнадцатеричном представлениях.
Затем мы рассмотрели, как преобразовать один числовой тип данных в другой.
Мы также рассмотрели некоторые важные модули Python — Fraction и Math.
Мы надеемся, что данная статья вам понравилась и принесла пользу.
Перевод статьи Python Numeric Data Types – Int, Float, Complex.