Преобразование и приведение типов в Python
В данной статье вы узнаете об использовании преобразования и приведения типов. Прежде чем изучать преобразование типов, советуем изучить типы данных в Python.
Преобразование типов
Процесс преобразования значения одного типа данных (целые числа, строки, числа с плавающей точкой и т. д.) в другой называется преобразованием типа. В Python есть два вида преобразования:
- Неявное преобразование типов.
- Явное приведение типов.
Неявное преобразование типов
При неявном преобразовании типов Python автоматически преобразует один тип данных в другой. Этот процесс не требует участия пользователя.
Давайте рассмотрим пример, в котором Python, чтобы избежать потери данных, производит преобразование типа данных с низким диапазоном (целое число) в тип с более высоким диапазоном (число с плавающей запятой).
# Преобразуем целое число в число с плавающей точкой
num_int = 123
num_float = 1.23
num_new = num_int + num_float
print("Тип данных в num_int:", type(num_int))
print("Тип данных в num_float:", type(num_float))
print("Значение num_new:", num_new)
print("Тип данных в num_new:", type(num_new))
Вывод:
Тип данных в num_int: <class 'int'>
Тип данных в num_float: <class 'float'>
Значение num_new: 124.23
Тип данных в num_new: <class 'float'>
В программе выше:
- мы сложили две переменные
num_int
иnum_float
, сохранили значение вnum_new
. - мы вывели на экран типы данных всех трех объектов соответственно;
- в выводе мы видим, что тип данных
num_int
— целое число, а тип данныхnum_float
— вещественное число. - кроме того, мы видим, что
num_new
имеет тип данных с плавающей запятой, потому что Python всегда преобразует меньший по диапазону тип в больший, чтобы избежать потери данных.
Теперь давайте попробуем сложить строку и целое число и посмотрим, как Python с этим справится.
# Складываем строку и целое число
num_int = 123
num_str = "456"
print("Тип данных в num_int:", type(num_int))
print("Тип данных в num_str:", type(num_str))
print(num_int + num_str)
Вывод:
Тип данных в num_int: <class 'int'>
Тип данных в num_str: <class 'str'>
Traceback (most recent call last):
File "python", line 7, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
В программе выше:
- мы сложили две переменные
num_int
иnum_str.
- как видно из вывода, мы получили
TypeError
— Python не может использовать неявное преобразование в таких случаях.
Однако в Python есть решение для таких ситуаций — это явное приведение.
Явное приведение типов
В явном преобразовании программист сам заменяет текущий тип данных объекта на требуемый. Для этого используются встроенные функции, такие как int ()
, float ()
, str ()
и т. д., чтобы выполнить явное преобразование типов.
Этот тип преобразования также называется приведением типов, поскольку пользователь приводит (изменяет) тип данных объекта.
Синтаксис
<требуемый_тип_данных>(выражение)
Приведение типов можно выполнить, если присвоить выражению значение функции, соответствующее нужному типу данных.
# Складываем строку и целое число с помощью явного преобразования
num_int = 123
num_str = "456"
print("Тип данных в num_int:", type(num_int))
print("Тип данных в num_str до явного приведения:", type(num_str))
num_str = int(num_str)
print("Тип данных в num_str после явного приведения:", type(num_str))
num_sum = num_int + num_str
print("Сумма num_int и num_str:", num_sum)
print("Тип данных полученной суммы:", type(num_sum))
Вывод:
Тип данных в num_int: <class 'int'>
Тип данных в num_str до явного приведения: <class 'str'>
Тип данных в num_str после явного приведения: <class 'int'>
Сумма num_int и num_str: 579
Тип данных полученной суммы: <class 'int’>
В программе выше:
- мы сложили переменные
num_str
иnum_int
; - для выполнения сложения мы преобразовали
num_str
из строкового типа в целочисленный, используя функциюint ()
; - после преобразования
num_str
в целочисленное значение Python уже может сложить эти две переменные; - мы получили значение
num_sum
, его тип данных — целое число.
Что надо запомнить:
- Преобразование типов — это преобразование объекта из одного типа данных в другой.
- Неявное преобразование типов автоматически выполняется интерпретатором Python.
- Python не допускает потери данных при неявном преобразовании типов.
- Явное преобразование типов также называется приведением типов. Типы данных преобразуются пользователем с помощью встроенных функций.
- В явном приведении типов может произойти потеря данных, поскольку мы принудительно приводим объект к определенному типу.