Урок 4 Типы данных

int, float, str, bool, NoneType, type(), isinstance()

⏱ ~12 мин чтения· 🚀 Начальный

Основные встроенные типы

В Python у каждого значения есть тип:

# Числовые типы
x = 10          # int — целое число
y = 3.14        # float — число с плавающей точкой
z = 1 + 2j      # complex — комплексное число

# Строковый тип
name = "Python"  # str — строка

# Логический тип
flag = True      # bool — булево значение

# Пустой тип
result = None    # NoneType — отсутствие значения

Определение типа — type() и isinstance()

Узнать тип переменной:

print(type(10))          #
print(type("hello"))     #
print(type(True))        #

# isinstance — проверка принадлежности типу
print(isinstance(10, int))       # True
print(isinstance("abc", str))    # True
print(isinstance(10, (int, float)))  # True

Преобразование типов

Явное преобразование (приведение) типов — превращение значения из одного типа в другой с помощью функций-конструкторов: int(), float(), str(), bool().

Числовые преобразования

# int > float
print(float(5))        # 5.0

# float > int (дробная часть отбрасывается!)
print(int(3.14))       # 3
print(int(3.99))       # 3  (не округляет, а отбрасывает)

# int > str
print(str(100))        # "100"

# float > str
print(str(3.14))       # "3.14"

Преобразование строк в числа

# Строка > int
print(int("42"))       # 42

# Строка > float
print(float("2.5"))    # 2.5
print(float("3"))      # 3.0  (float допускает целое в строке)

Ошибка преобразования. Если строка не является числом, Python выбросит ошибку ValueError:

# int("abc")    # ValueError: invalid literal for int()
# float("12,5") # ValueError: 12,5 — нужна точка, а не запятая

Преобразование в bool

Любое значение можно превратить в bool. Правило простое: «пустые» значения дают False, всё остальное — True. Подробнее о truthy и falsy значениях — в уроке 8.

print(bool(1))         # True
print(bool(0))         # False   (ноль — «пустое» число)
print(bool(-5))        # True
print(bool(""))        # False   (пустая строка)
print(bool("text"))    # True    (непустая строка)
print(bool(None))      # False

Bool как число

True ведёт себя как 1, False — как 0:

print(int(True))       # 1
print(int(False))      # 0
print(True + 5)        # 6
print(False * 10)      # 0

Изменяемые и неизменяемые типы

Одни типы можно изменять после создания (изменяемые), другие — нет (неизменяемые):

Неизменяемые (immutable): int, float, str, bool

Изменяемые (mutable) мы изучим позже — к ним относятся list, dict, set и другие коллекции.

# Строки неизменяемы
s = "hello"
# s[0] = "H"  # Ошибка! Нельзя изменить символ
s = "H" + s[1:]  # Нужно создать новую строку