Преобразование типов данных в Python

Опубликован: 10.08.2023 174

Python - динамически типизированный язык, в котором тип используемых переменных, других объектов определяется "динамически" в процессе выполнения программы в момент присвоения им значений.

Это позволяет позволяет "на лету" изменять типы данных, чтобы при написании программ иметь возможность гибко манипулировать значениями разных типов.

При этом, важно учитывать, что преобразование типов данных может осуществляться как явно (с помощью встроенных функций), так и не явно (в процессе выполнения операций и вычислений с операндами разных типов данных).

Интерпретатор Python допускает преобразование типов данных в определенных пределах, например:

  • строку, содержащую буквенные и специальные символы, нельзя сделать числом;
  • преобразование списка, строки, множества или кортежа в словарь потребует дополнительных манипуляций.

Для явного преобразования используются встроенные функции базовых типов данных:

  • int(x) - преобразует x в целое число;
  • float(x) - преобразует x в число с плавающей точкой;
  • str(x) - преобразует x в строковое представление;
  • chr(x) - преобразует целое число x в символ;
  • ord(x) - преобразует символ x в соответствующее ему целое число;
  • hex(x) - преобразует целое число x в шестнадцатеричную строку;
  • oct(x) - преобразует целое число x в восьмеричную строку;

Для явного преобразования объектов "контейнерного типа" (списка, кортежа, множества, словаря) используются встроенные методы:

  • set(x) - преобразует итерируемый объект x в множество;
  • list(x) - преобразует итерируемый объект x в список;
  • tuple(x) - преобразует итерируемый объект x в кортеж;
  • dict(x) - преобразует кортеж или список x, состоящий из пар значений (key,value), в словарь.

Примеры явного преобразования типов данных

# Преобразование чисел с плавающей запятой в ​​целые числа:
a = float(input())
5.123
print(int(a)) 
5

# Преобразование целых чисел в числа с плавающей запятой:
a = 5
print(float(a)) 
5.0

# Преобразование строки в число и вывод числа без ведущих нулей:
a = '00032567'
print(int(a)) 
32567

# Сложение строки и числа:
a = 'Apollo '
b = 13
print(a + str(b)) 
Apollo 13

# Преобразование списка в строку:
a = ['п', 'р', 'и', 'в', 'е', 'т'] 
print('*'.join(a)) 
п*р*и*в*е*т

# Преобразование строки в множество:
a = 'привет'
print(set(a)) 
{'в', 'е', 'и', 'т', 'п', 'р'}

# Преобразование строки в список:
a = 'я изучаю Python'
print(list(a))
['я', ' ', 'и', 'з', 'у', 'ч', 'а', 'ю', ' ', 'P', 'y', 't', 'h', 'o', 'n']

# Преобразование кортежа в список:
a = ('red', 'blue', 'green')
print(list(a)) 
['red', 'blue', 'green']

Неявное преобразование типов данных

Неявное преобразование (или приведение) типов данных автоматически выполняется интерпретатором Python и не требует участия пользователя.

В ходе выполнения программы Python производит преобразование одного типа данных в другой (если такое преобразование возможно выполнить без вызова исключения об ошибке).

При этом, Python не допускает потери данных при неявном преобразовании типов:

  • при делении целого числа int на целое число int результат всегда будет число с плавающей точкой float;
  • при сложении целого числа со строковым представлением целого числа Python выдаст ошибку TypeError.
# деление целого числа на целое число - результат число с плавающей точкой:
x: int = 14
y: int = 2
z = x / y

print(f" {z=},  {type(z)=} ")
z=7.0,  type(z)=<class 'float'>

# сложение целого числа со строкой:
num_int: int = 123
num_str: str = "456"

print( f"Тип данных в num_int: {type(num_int)}" )
Тип данных в num_int: <class 'int'>
print( f"Тип данных в num_str: {type(num_str)}" )
Тип данных в num_str: <class 'str'>

print(num_int + num_str)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Похожие посты

Использование аннотации типов в Python

Изменяемые и неизменяемые типы данных

Динамическая типизация в Python

Встроенные типы данных в Python

Комментариев нет.