Змішування типів. Перетворення типів в операторах. Правила

Змішування типів. Перетворення типів в операторах. Правила


Зміст


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

 


Зв’язані теми