Преобразование и приведение типов в Python

В данной статье вы узнаете об использовании преобразования и приведения типов. Прежде чем изучать преобразование типов, советуем изучить типы данных в Python.

Преобразование типов

Процесс преобразования значения одного типа данных (целые числа, строки, числа с плавающей точкой и т. д.) в другой называется преобразованием типа. В Python есть два вида преобразования:

  1. Неявное преобразование типов.
  2. Явное приведение типов.

Неявное преобразование типов

При неявном преобразовании типов 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 не допускает потери данных при неявном преобразовании типов.
  • Явное преобразование типов также называется приведением типов. Типы данных преобразуются пользователем с помощью встроенных функций.
  • В явном приведении типов может произойти потеря данных, поскольку мы принудительно приводим объект к определенному типу.
codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©