Олег Марков
Как проверить тип переменной в Python
Введение
Понимание типа переменной важно для корректной работы функций и предотвращения ошибок в Python. Встроенные функции type и isinstance позволяют определить тип объекта и его принадлежность к определённому классу, включая наследуемые классы.
В этой статье мы рассмотрим, как правильно проверять типы переменных, разберём синтаксис и практические примеры.
Если вы хотите детальнее изучить работу с типами и объектами в Python — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Использование функции type
Функция type(obj) возвращает точный тип объекта obj.
x = 10
print(type(x)) # <class 'int'>
y = [1, 2, 3]
print(type(y)) # <class 'list'>
s = "Hello"
print(type(s)) # <class 'str'>Типы можно использовать для сравнения:
if type(x) == int:
print("x — целое число")Использование функции isinstance
isinstance(obj, classinfo) проверяет, является ли объект экземпляром класса или его подкласса. Это более безопасный и гибкий способ проверки типов.
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Dog)) # True
print(isinstance(dog, Animal)) # True
print(isinstance(dog, object)) # TrueСравнение с type:
print(type(dog) == Animal) # False, так как dog — точный тип DogПроверка нескольких типов одновременно
value = 3.14
if isinstance(value, (int, float)):
print("Число")Практическое использование
- Валидация аргументов функций:
def square(x):
if not isinstance(x, (int, float)):
raise TypeError("Ожидалось число")
return x ** 2- Фильтрация коллекций по типу:
data = [1, "text", 3.5, [4]]
numbers = [x for x in data if isinstance(x, (int, float))]
print(numbers) # [1, 3.5]Частые ошибки
- Использование
type(obj) == SomeTypeвместоisinstance, что не учитывает наследование. - Сравнение с некорректным типом (например, передача строки вместо класса).
- Проверка сложных коллекций без генераторов или фильтров, что снижает читаемость кода.
Часто задаваемые вопросы
Можно ли использовать isinstance с кортежами и списками? Да, любая коллекция, которую можно итерировать, подходит.
Чем отличается type от isinstance?
typeвозвращает точный тип объекта, без учёта наследования.isinstanceпроверяет принадлежность к классу и его подклассам.Что делать, если нужен строгий контроль типа? Используйте
type(obj) == SomeTypeдля строгого соответствия.
Заключение
Проверка типа переменной — важный элемент написания безопасного и корректного Python-кода. Функции type и isinstance дают разные возможности: type — для точного определения, isinstance — для проверки наследования и гибкой валидации.
Для системного изучения работы с типами, объектами и проверкой данных рекомендую пройти курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев