Перейти до змісту

Перетворення типів

В Python типи даних ще називають класами.

s = 'string'

Можна сказати що змінна s типу "символьний рядок", або належить до класу str.


Якого ти типу?

В Python є функція type(), яка дозволяє нам визначити до якого класу належить її аргумент, або ж іншими словами якого типу є переданий ій аргумент.

>>> type(1)
<class 'int'>
>>> type(1.1)
<class 'float'>
>>> type('Hello')
<class 'str'>
>>>

Хочу в інший клас!

Деколи виникає необхідність перетворити один тип даних в інший.
Розглянемо приклад:

>>> a = '123'
>>> b = '321'
>>> type(a)
<class 'str'>
>>> type(b)
<class 'str'>
>>>

Змінні a і b рядкового типу, хоча усі символи які містяться в них є цифрами і разом усі символи у кожній змінній представляють ціле число. Припустимо ми хочемо отримати суму цих чисел. Додавання — це арифметична операція. Ми не можемо виконувати арифметичні операції над рядками. Було б непогано зробити так, щоб те, що міститься у рядках перетворились на цілі числа, тоді ми легко виконаємо додавання над цілими числами.

Щоб перетворити щось певного типу у тип цілого числа в Python є функція int:

>>> num = int('100500')
>>> type(num)
<class 'int'>
>>>

Коли ми бачимо запис типу

int(arg)

ми говоримо що привели arg до типу int.

Розвиваючи приклад з двома змінними рядкового типу:

>>> a = '123'
>>> b = '321'
>>> x = int(a)
>>> x
123
>>> type(x)
<class 'int'>
>>> y = int(b)
>>> y
321
>>> x + y
444
>>> int(a) + int(b)
444
>>>

В Python є функції для приведення до інших типів, розглянемо деякі з них:

Функція Опис
int(arg) перетвоює arg у ціле число
float(arg) перетвоює arg у дробове число
str(arg) перетвоює arg у символьний рядок

Розглянемо приклади приведення до різних типів даних


int()

>>> int('777')
777
>>> int(23.2)
23
>>> int('23.2')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '23.2'
>>> int()
0
>>>

float()

>>> float(2)
2.0
>>> float('2')
2.0
>>> float('2.2')
2.2
>>> float()
0.0
>>>

str()

>>> str(1)
'1'
>>> str(1.1)
'1.1'
>>> str()
''
>>>