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

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

Из этой статьи вы узнаете что такое преобразование и приведение типов в Python и для чего это нужно. Для понимание материала этой статьи, вам сначала нужно ознакомиться со статьей «Типы данных в Python».

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

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

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

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

При неявном преобразовании типов Python автоматически преобразует один тип данных в другой тип данных. Этот процесс не требует участия пользователя.

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

Пример 1: преобразование целого числа в число с плавающей точкой

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))
блок 1

Давайте рассмотрим этот пример преобразования типа подробнее:

  1. мы добавляем две переменные num_int и num_float, сохраняя значение в num_new
  2. мы выводим тип данных всех трех объектов соответственно
  3. в выводе мы можем видеть, что тип данных num_int является целым числом, тип данных num_float - это число с плавающей точкой
  4. кроме того, мы можем видеть, что num_new имеет тип данных float, потому что Python всегда преобразует меньший тип данных в больший тип данных, чтобы избежать потери данных

Подробнее преобразование типа int в float и обратно, рассмотрено в статье Числа в Python.

Теперь давайте попробуем добавить строку и целое число и посмотрим, как Python отнесется к этому.

Пример 2: сложение строкового (более высокого) типа данных и целочисленного (более низкого) типа данных

num_int = 123
num_str = "456"

print("тип данных num_int:",type(num_int))
print("тип данных num_str:",type(num_str))

print(num_int+num_str)

Если запустить приведенный выше пример, вы сначала увидите вывод типа данных двух наших переменных, а затем сообщение об ошибке. В данном случае, интерпретатор «не понял» что ему делать со значениями двух переменных, так как сложить число и строку не представляется возможным. Однако у Python есть решение для такого типа ситуаций, которое известно как явное преобразование.

Явное приведение типов

В явном преобразовании типов пользователи сами преобразуют тип данных объекта в требуемый тип данных. Мы используем предопределенные функции, такие как int(), float(), str() и т.д., чтобы выполнить явное преобразование типов.

Это преобразование типов также называется явным приведением типов, поскольку пользователь явно преобразует (изменяет) тип данных объектов.

Typecasting может быть выполнен путем назначения требуемой функции типа данных для выражения.

Пример 3: добавление строки и целого числа с использованием явного преобразования

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("тип данных num_sum:",type(num_sum))

Ключевые моменты для запоминания

  • Преобразование типов - это преобразование объекта из одного типа данных в другой тип данных.
  • Неявное преобразование типов автоматически выполняется интерпретатором Python.
  • Python позволяет избежать потери данных в неявном преобразовании типов.
  • Явное преобразование типов также называется приведением типов, типы данных объекта преобразуются с использованием предопределенной функции.
  • При приведении типов может произойти потеря данных, поскольку мы приводим объект к определенному типу данных.
блок 3

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*