Преобразование типов данных Python3
Иногда нам нужно преобразовывать встроенные типы данных. Для преобразования типов данных, как правило, достаточно использовать тип данных в качестве имени функции.
Преобразование типов данных в Python можно разделить на два типа:
- Неявное преобразование типов — выполняется автоматически
- Явное преобразование типов — требует использования функций типа для преобразования
Неявное преобразование типов
При неявном преобразовании типов Python автоматически преобразует один тип данных в другой без нашего вмешательства.
В следующем примере мы выполняем операцию над двумя разными типами данных, и низший тип данных (целое число) преобразуется в высший тип данных (число с плавающей точкой), чтобы избежать потери данных.
Пример
num_flo = 1.23
num_new = num_int + num_flo
print("тип данных num_int:",type(num_int))
print("тип данных num_flo:",type(num_flo))
print("значение num_new:",num_new)
print("тип данных num_new:",type(num_new))
Вывод приведенного выше примера:
num_int 数据类型为: <class 'int'> num_flo 数据类型为: <class 'float'> num_new: 值为: 124.23 num_new 数据类型为: <class 'float'>
Анализ кода:
- В примере у нас есть две переменные разных типов данных
num_intиnum_floвыполняем сложение и сохраняем в переменнойnum_new. - Затем мы проверяем типы данных трёх переменных.
- В выводе мы видим
num_intДа整型(integer),num_floДа浮点型(float)。 - Аналогично новая переменная
num_newДа浮点型(float), это потому что Python преобразует более низкий тип данных в более высокий, чтобы избежать потери данных.
Рассмотрим другой пример: сложение целочисленных данных и данных строкового типа:
Пример
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 "/example-test/test.py", line 7, in <module>
print(num_int+num_str)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Как видно из вывода, операция между целочисленным и строковым типами приведёт к ошибке с выводом TypeError. Python не может использовать неявное преобразование в этом случае.
Однако Python предоставляет решение для таких ситуаций, называемое явным преобразованием.
Явное преобразование типов
При явном преобразовании типов пользователь преобразует тип данных объекта в требуемый тип данных. Мы используем предопределённые функции, такие как int(), float(), str() и т. д., для выполнения явного преобразования типов.
int()Преобразование в целочисленный тип:
Пример
y = int(2.8) # y выводит 2
z = int("3") # z выводит 3
float()Преобразование в тип с плавающей запятой:
Пример
y = float(2.8) # y выводит 2.8
z = float("3") # z выводит 3.0
w = float("4.2") # w выводит 4.2
str()Преобразование в строковый тип:
Пример
y = str(2) # y выводит '2'
z = str(3.0) # z выводит '3.0'
Чтобы выполнить операцию между целочисленным и строковым типами, можно использовать принудительное преобразование типов:
Пример
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 sum 数据类型为: <class 'int'>
Следующие встроенные функции могут выполнять преобразования между типами данных. Эти функции возвращают новый объект, представляющий преобразованное значение.
| Функция | Описание |
|---|---|
|
Преобразовать x в целое число |
|
|
Преобразовать x в число с плавающей запятой |
|
|
Создать комплексное число |
|
|
Преобразовать объект x в строку |
|
|
Преобразовать объект x в строку-выражение |
|
|
Используется для вычисления допустимого выражения Python в строке и возврата объекта |
|
|
Преобразовать последовательность s в кортеж |
|
|
Преобразовать последовательность s в список |
|
|
Преобразовать в изменяемое множество |
|
|
Создать словарь. d должен быть последовательностью кортежей (key, value). |
|
|
Преобразовать в неизменяемое множество |
|
|
Преобразовать целое число в символ |
|
|
Преобразовать символ в его целочисленное значение |
|
|
Преобразовать целое число в шестнадцатеричную строку |
|
|
Преобразовать целое число в восьмеричную строку |
|
|
Преобразовать объект x в логическое значение (True или False) |
|
|
Преобразовать объект в неизменяемую последовательность байтов |
|
|
Преобразовать объект в изменяемый массив байтов |
|
|
Возвращает объект memory view для заданного аргумента (без копирования данных) |
|
|
Преобразует целое число в двоичную строку |
|
|
Возвращает ASCII-представление объекта с экранированием не-ASCII символов |