Как уже отмечалось ранее, функция type() позволяет определить тип переменной. Например:
>>> а = "1"
>>> type(a)
<class ‘str’>
>>>
Данную функцию можно использовать не только для вывода типа, но и для сравнения возвращаемого нею значения с названием типа данных:
>>> if type(a) == str:
print("String");
String
Иногда нужно преобразовать один тип данных в другой. Эта операция называется приведением типа. Стоит отметить, что далеко не всегда можно преобразовать один тип данных в другой без потери самих данных. Некоторые типы данных вообще не совместимы. Например, никак нельзя преобразовать вещественное число в целое без потери данных. А при преобразовании строки в число вы вообще увидите сообщение об ошибке:
>>> int("String")
Traceback (most recent call last):
File "<pyshel#60>", line 1, in <module>
int("String")
ValueError: invalid literal for int() with base 10:
'String'
Ниже перечислены функции приведения типов, а также примеры их использования.
Функции приведения типов:
Функция - Описание – Пример
bool() - Преобразование объекта в логический тип данных >>> bool(1) True
int() - Преобразование объекта в целое число. Обратите внимание: дробная часть потеряна >>> int(5.5) 5
float() - Преобразование целого числа в вещественное >>> float(5) 5.0
str() - Преобразование объекта в строку >>> str ( [5, 4' 3]) '[5, 4, 3]'
bytes() - Преобразует строку в объект типа bytes(). Первый параметр - это строка, второй - кодировка, третий параметр необязательный и может указывать способ обработки ошибок (strict, replace, ignore) >>> bytes("String", "utf-8") b'String'
bytearray() - Преобразует строку в объект типа bytearray >>> bytearray("Hello", "utf-8") bytearray(b'Hello')
list() - Используется для преобразования последовательности в список >>> list("Hello") [ 'Н', 'е', , l', 'l', 'о']
tuple() – Преобразует последовательность в кортеж >>> tuple("Hello") ( 'Н', 'е', 'l', 'l', 'о')
Зачем необходимо преобразование типов, если в Python используется динамическая типизация и типы приводятся автоматически? Далеко не всегда функции возвращают значения в ожидаемом типе. Представим, что нам нужно написать простейшую программу, вычисляющую сумму двух чисел, введенных пользователем:
х = inрut("Введите х = \n")
у= inрut("Введите у \n")
print (х + у)
input ()
Запустите программу и введите числа 5 и 7. Хотя вы ввели числа, функция input() всегда возвращает введенное значение, как строку. В результате вместо числа 12 вы увидели строку 57 (рисунок).
Изменим программу так:
х = float(input("Bвeдитe х = \n"))
у= float(input("Bвeдитe у \n"))
print (х + у)
nput ()
Здесь мы приводим введенное пользователем значение к типу float, а затем вычисляем сумму двух вещественных чисел. В результате получаем значение 15.0, что соответствует нашим ожиданиям (рисунок).