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

Последнее обновление: 17.01.2022

В операциях с данными могут применяться значения различных типов. Например, складываются число типа int и число типа float:


a = 2       # число int
b = 2.5     # число float
c = a + b
print(c)    # 4.5

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

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

Оба числа в арифметических операциях должны представлять один и тот же тип. Если же два операнда операции представляют разные типы данных, то Python пытается автоматически выполнить преобразования к одному из типов в соответствии со следующми правилами:

  • Если один из операндов операции представляет комплексное число (тип complex), то другой операнд также преобразуется к типу complex.

  • Иначе, если один из операндов представляет тип float, то второй операнд также преобразуется к типу float. Собственно так и произошло в примере выше, где значение переменной a было преобразовано в тип float

  • Иначе, оба операнда должны представлять тип int, и в этом случае преобазование не требуется

Явные преобразования

Но в некоторых случаях возникает необходимость вручную выполнить преобразование типов. Например, пусть у нас будет следующий код:


a = "2"
b = 3
c = a + b

Мы ожидаем, что «2» + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И мы увидим при выполнении кода что-то наподобие:


Traceback (most recent call last):
  File "/Users/eugene/PycharmProjects/HelloApp/main.py", line 3, in 
    c = a + b
TypeError: can only concatenate str (not "int") to str

Для преобразования типов Python предоставляет ряд встроенных функций:

  • int(): преобразует значение в целое число

  • float(): преобразует значение в число с плавающей точкой

  • str(): преобразует значение в строку

int

Так, в предыдущем примере преобазуем строку в число с помощью функции int():


a = "2"
b = 3
c = int(a) + b
print(c)    # 5

Примеры преобразований с помощью

int():


a = int(15)     # a = 15
b = int(3. 7)    # b = 3
c = int("4")    # c = 4
e = int(False)    # e = 0
f = int(True)     # f = 1

Однако если значение не может быть преобразовано, то функция int выдаст ошибку ValueError: invalid literal for int() with base 10:


b = int("a1c")    # Ошибка
c = int("4.7")    # Ошибка
float

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


a = "2.7"
b = 3
c = float(a) + b
print(c) # 5.7

Примеры преобразований с помощью float():


a = float(15)       # a = 15.0
b = float(3.7)      # b = 3.7
c = float("4.7")    # c = 4.7
d = float("5")      # d = 5.0
e = float(False)    # e = 0.0
f = float(True)     # f = 1.0

Но опять же не все значения могут автоматически преобразованы в float. Так, в следующем случае Python сгенерирует ошибку:


d = float("abc")  # Ошибка 
str

Функция str() преобразует значение в строку:


a = str(False)      # a = "False"
b = str(True)       # b = "True"
c = str(5)         # c = "5"
d = str(5.
7) # d = "5.7"

Функция str() может быть актуальна, например, при добавлении к строке значения другого типа. Например, в следующем случае мы получим ошибку:


age = 22
message = "Age: " + age     # Ошибка
print(message)

Если число складывается с число, то это стандартная операция сложения чисел. Если строка складывается со строкой, то это операция объединения строк. Но каким образом выполнить операцию сложения по отношение к строке и числу, Python не знает. И если мы в данном случае мы хотим выполнить операцию объединения строк, то число можно привести к строке с помощью функции

str():


age = 22
message = "Age: " + str(age)   # Age: 22
print(message)

НазадСодержаниеВперед

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

Преобразование типов Python (с примерами)

В этом руководстве мы узнаем о преобразовании типов Python с помощью примеров.

В программировании преобразование типов — это процесс преобразования данных одного типа в другой. Например: преобразование данных int в str .

В Python существует два типа преобразования типов.

  • Неявное преобразование — автоматическое преобразование типов
  • Явное преобразование — преобразование типов вручную

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

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


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

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

 целое_число = 123
float_number = 1,23
новое_число = целое_число + плавающее_число
# отображаем новое значение и результирующий тип данных
print("Значение:",new_number)
print("Тип данных:",type(new_number)) 

Выход

  Значение: 124,23
Тип данных:   

В приведенном выше примере мы создали две переменные: integer_number и float_number типа int и float соответственно.

Затем мы добавили эти две переменные и сохранили результат в new_number .

Как мы видим, new_number имеет значение 124,23 и имеет число с плавающей точкой 9. 0006 тип данных.

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

Примечание:

  • Мы получим TypeError , если попытаемся добавить str и int . Например, '12' + 23 . Python не может использовать неявное преобразование в таких условиях.
  • В Python есть решение для подобных ситуаций, известное как явное преобразование.

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

При явном преобразовании типов пользователи преобразуют тип данных объекта в требуемый тип данных.

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

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


Пример 2. Добавление строки и целого числа с использованием явного преобразования

 num_string = '12'
число_целое = 23
print("Тип данных num_string до приведения типов:",type(num_string))
# явное преобразование типов
num_string = целое (num_string)
print("Тип данных num_string после приведения типов:",type(num_string))
num_sum = num_integer + num_string
печать("Сумма:",num_sum)
print("Тип данных num_sum:",type(num_sum)) 

Вывод

  Тип данных num_string до приведения типов: 
Тип данных num_string после приведения типов: 
Сумма: 35
Тип данных num_sum: <класс 'int'>  

В приведенном выше примере мы создали две переменные: num_string и num_integer со значениями типа str и int соответственно. Обратите внимание на код:

 num_string = int(num_string) 

Здесь мы использовали int() для выполнения явного преобразования типа num_string в целочисленный тип.

После преобразования num_string в целочисленное значение Python может добавить эти две переменные.

Наконец, мы получили значение num_sum , т.е. 35 и тип данных int .


Ключевые моменты, которые следует помнить

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

Содержание

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

Учебник по Python

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

Процесс преобразования типа данных Python в другой тип данных называется преобразованием типа. В основном в Python существует два типа методов преобразования типов, а именно неявное преобразование типов и явное преобразование типов.

В этом модуле мы рассмотрим следующие темы:

  • Неявное преобразование типов в Python
  • Явное преобразование типов в Python
  • Ключевые моменты, которые следует помнить при выполнении преобразования типов в Python

Итак, без дальнейших проволочек, приступим.

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

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

Не беспокойтесь, если не сможете вспомнить. Давайте посмотрим на другой пример.

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

 а = 5
б = 5,5
сумма = а + б
печать (сумма)
print (type (sum)) #type() используется для отображения типа данных переменной


Выход:
10,5
 

В приведенном выше примере мы взяли две переменные типа integer и float и добавили их. Далее мы объявили еще одну переменную с именем sum и сохранили в ней результат сложения. Когда мы проверили тип данных переменной sum, мы увидели, что тип данных переменной sum был автоматически преобразован компилятором Python в тип данных float. Это называется неявным преобразованием типов.

Причина того, что переменная суммы была преобразована в тип данных с плавающей запятой, а не в целочисленный тип данных, заключается в том, что если бы компилятор преобразовал ее в целочисленный тип данных, то ему пришлось бы удалить дробную часть, а это было бы ve привело к потере данных. Таким образом, Python всегда преобразует меньший тип данных в больший тип данных, чтобы предотвратить потерю данных.

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

Запишитесь на онлайн-обучение Python в Сиднее и дайте старт своей карьере в программировании на Python!

Получите 100% повышение!

Овладейте самыми востребованными навыками прямо сейчас!

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

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

Функция Описание
int(y [основание]) Он преобразует y в целое число, а Base указывает основание счисления. Например, если вы хотите преобразовать строку в десятичные числа, вы будете использовать 10 в качестве основы.
поплавок(у) Преобразует и в число с плавающей запятой.
сложный(реальный [имаг]) Создает комплексное число.
ул(у) Преобразует и в строку.
кортеж(у) Преобразует и в кортеж.
список(у) Преобразует и в список.
комплект(у) Преобразует и в набор.
дикт(у) Он создает словарь, а y должен быть последовательностью кортежей (ключ, значение).
ор(у) Преобразует символ в целое число.
шестн(у) Преобразует целое число в шестнадцатеричную строку.
окт(г) Преобразует целое число в восьмеричную строку

Теперь, когда мы знаем встроенные функции Python, которые используются для явного преобразования типов, давайте посмотрим на синтаксис явного преобразования типов:

 (required_data type)(expression) 

Давайте рассмотрим следующие примеры явного преобразования типов в Python.

 # добавление строковых и целочисленных типов данных с использованием явного преобразования типов
а = 100
б = «200»
результат1 = а + б
б = интервал (б)
результат2 = а + б
печать (результат2)


Выход:
Traceback (последний последний вызов):
Файл «», строка 1, в
TypeError: неподдерживаемые типы операндов для +: «int» и «str»
300 

В приведенном выше примере переменная a имеет числовой тип данных и переменная 9. 0207 b имеет строковый тип данных. Когда мы пытаемся сложить эти два целых числа и сохранить значение в переменной с именем result1, возникает TypeError, как показано в выходных данных. Итак, чтобы выполнить эту операцию, мы должны использовать явное приведение типов.
Как видно из приведенного выше блока кода, мы преобразовали переменную b в тип int, а затем добавили переменные a и b . Сумма хранится в переменной с именем result2, и при печати она отображает 300 в качестве вывода, как мы можем видеть в блоке вывода.

Пройдите этот курс Python в Лондоне, чтобы получить четкое представление о Python!

Ключевые моменты, которые следует помнить при выполнении преобразования типов в Python

  • Преобразование типов — это процесс
  • Неявное преобразование типов выполняется только интерпретатором Python.
  • Явное преобразование типов выполняется пользователем путем явного использования функций преобразования типов в программном коде.