Смешивание типов. Преобразование типов в операторах. Правила
Содержание
- 1. Что означает термин «смешивание типов» в операторах?
- 2. Правила преобразования типов в Python
- 3. Встроенные функции int(), float() принудительного преобразования типов. Примеры
- 4. Какие категории операторов (операций) допускается использовать при смешивании и преобразовании типов?
- 5. Можно ли в Python суммировать число с строкой?
- Связанные темы
Поиск на других ресурсах:
1. Что означает термин «смешивание типов» в операторах?
При использовании бинарных операторов (таких как +, –, *, / и т.д.) возможна ситуация, когда оба операнда (числа) имеют различные типы. Если при выполнении некоторого оператора оба операнда имеют различные типы, то этот случай называется смешиванием типов.
Например
# преобразование и смешивание типов a = 3 # смешивание целого и вещественного типа, результат - вещественный тип # в операции умножения * операнды имеют разные типы b = a * 5.7 # b = 17.1
В примере в операции умножения (*) операнд слева a имеет целый тип, а операнд справа 5.7 имеет вещественный тип.
В Python возможны другие случаи смешивания типов, как показано в следующем примере
# смешивание вещественного и комплексного типа, результат - комплексный тип b = 17.1 c = b / (2+3j) # c= (2.630769230769231-3.946153846153847j) # смешивание целого и комплексного типа d = 5 * (1.2+3.8j) # d= (6+19j)
⇑
2. Правила преобразования типов в Python
Если в некоторой операции, операнды имеют различные типы (случай смешивания типов), то интерпретатор Python автоматически выполняет следующие действия:
- сначала типы операндов преобразуются к типу самого сложного операнда;
- затем над этими операндами выполняется операция в соответствии с правилами этого сложного типа.
Ниже приведены числовые типы в порядке убывания сложности:
- комплексные числа (наивысшая сложность);
- вещественные числа;
- целые числа.
Исходя из этого можно сделать следующие выводы:
- если в операции принимают участие целое и вещественное число, то целое число будет преобразовано в вещественное и результат будет числом вещественного типа;
- если в операции принимают участие вещественное и комплексное число, то вещественное число будет преобразовано в комплексное и результат будет комплексного типа. Это же касается и объединения целого и комплексного чисел.
Например, если рассмотреть фрагмент кода
a = 5 b = 3.2 + a
в строке
b = 3.2 + a
возникает ситуация смешивания типов. В этом случае сначала объект a целого типа преобразуется в объект вещественного типа со значением 5.0, затем применяется суммирование (+) для двух объектов вещественного типа, которыми есть число 3.2 и число 5.0. Результат вещественного типа 8.2 записывается в объект b.
⇑
3. Встроенные функции int(), float() принудительного преобразования типов. Примеры
Интерпретатор Python осуществляет автоматическое приведение типов в выражениях. Такое преобразование есть довольно удобным. Однако, возможна ситуация, когда нужно принудительно конвертировать из одного типа в другой.
Для этого в языке Python реализованы функции, которые выполняют преобразование целого и вещественного типов:
- int() – отсекает дробную часть вещественного числа;
- float() – преобразует целое число в вещественное.
Примеры.
# функция int() a = 8.423 b = int(a) # b = 8 - целое число b = int(7.2-1.3302) # b = 5 - целое число # функция float() - преобразует целое число в вещественное a = 35 b = float(a) # b = 35.0 - вещественное число
⇑
4. Какие категории операторов (операций) допускается использовать при смешивании и преобразовании типов?
При использовании бинарных операторов (операций) возможна ситуация, когда операнды имеют разные типы. Язык Python допускает такое применение операндов. Допускается смешивание типов в следующих категориях операторов:
- арифметические (математические) операторы +, –, *, /, %, //, **;
- операторы сравнения (отношения) ==, !=, <, >, >=, <=.
Например.
# арифметические операции a = 2.8 # вещественный тип b = 15 # целый тип c = a - b # c = -12.2, вещественный тип c = a % b # c = 2.8 - вещественный тип # операции сравнения d = a>b # d = False, смешиваются целый и вещественный типы a = 7+3j # a - комплексный тип d = a==7+3j # d = True # смешиваются комплексный и вещественный типы d = a==15.8 # d = False
⇑
5. Можно ли в Python суммировать число с строкой?
Нет. Операции вычисления в выражениях касаются только числовых типов: целого, вещественного, комплексного.
Например, попытка суммировать (умножить, разделить, вычесть и т.д.) целое число с строкой вызовет ошибку с соответствующим сообщением
TypeError: can only concatenate str (not "int") to str
⇑
Связанные темы
- Операторы (операции) для работы с числовыми объектами. Таблица приоритетности операторов
- Математические (арифметические) операторы. Примеры
- Операторы сравнения
- Битовые операторы
⇑