Преобразование типов данных
При работе с данными используется самые различные типы. Но чтобы провести операцию над двумя разными типами, надо преобразовать одно из них в другое.
Неявные преобразования
Неявные преобразования происходят тогда, когда Python может автоматически привести один тип к другому. Например, рассмотрим выражение, где у нас один операнд принадлежит типу int
, а второй float
:
a = 4 + "6"
print(type(a))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
В данном примере мы пытаемся сложить два операнда тип int
и str
, но получаем ошибку в итоге. Для правильного результата надо преобразовать "6"
с помощью встроенной int()
в целое число.
Явные преобразования
Явные преобразования необходимы, когда Python автоматически не приводит один тип к другому. Например:
a = 4 + 6.5
print(type(a))
<class 'float'>
Заметка
Python имеет следующие встроенные функции для преобразования типов:
str()
: преобразует значение в строку;int()
: преобразует значение в целое число;float()
: преобразует значение в число с плавающей запятой;complex()
: преобразует значение в комплексное число;bool()
: преобразует значение в булево значение;list()
: преобразует итерируемый объект в список;tuple()
: преобразует итерируемый объект в кортеж;set()
,frozenset()
: преобразует итерируемый объект в изменяемое/неизменяемое множество;bytes()
,bytearray()
: преобразует значение к бинарному типу/массиву.
Примеры
bool
Для приведения других типов данных к булеву используется функция bool()
, работающая по следующим соглашениям:
- строки:
# пустая строка - False bool("") == False # непустая строка - True bool("qwerty") == True
- числа:
# нулевое число - False bool(0.0) == False # ненулевое число (включая отрицательные) - True bool(15) == bool(-15) == True
- списки и кортежи:
# пустой список/кортеж - False bool([]) == False # непустой список/кортеж (даже если элемент является пустым списком/кортежем) - True bool(["hi"]) == bool([[]]) == True
- функции:
# всегда True bool(print) == True
Булев тип приводится к следующим типам данных:
- к строке:
str(True) == "True" str(False) == "False"
- к числам:
# True int(True) == 1 float(True) == 1.0 complex(True) == 1 + 0j # False int(False) == 0 float(False) == 0.0 complex(False) == 0j