Как узнать тип переменной Python

Содержание
Введение
Разница между type() и isinstance()
type()
Пример использования type()
isinstance()
Пример использования isinstance()
Проверка списка или другого iterable
В других языках
Похожие статьи

Введение

В Python есть две функции type() и isinstance() с помощью которых можно проверить к какому типу данных относится переменная.

Разница между type() и isinstance()

type() возвращает тип объекта

isinstance() возвращает boolean значение - принадлежит объект данному типу или нет

type()

Встроенная функция type() это самый простой способ выяснить тип объекта. В Python всё является объектом, объекты делятся на изменяемые и неизменяемые .

Вы можете воспользоваться type() следующим образом.

print(type(variable))

Пример использования type()

В Python четырнадцать типов данных.

Для начала рассмотрим три численных типа (Numeric Types):

Создайте три переменные разного численного типа и проверьте работу функции:

var_int = 1380 var_float = 3.14 var_complex = 2.0-3.0j print(type(var_int)) print(type(var_float)) print(type(var_complex))

<class 'int'> <class 'float'> <class 'complex'>

Рассмотрим ещё несколько примеров

# Text Type: var_str = 'heihei.ru' # Boolean Type: var_bool = True # Sequence Types: var_list = ['heihei.ru','topbicycle.ru','urn.su'] var_tuple = ('andreyolegovich.ru', 'aredel.com') var_range = range(0,9) print(type(var_str)) print(type(var_bool)) print(type(var_list)) print(type(var_tuple)) print(type(var_range))

<class 'str'> <class 'bool'> <class 'list'> <class 'tuple'> <class 'range'>

Спецификацию функции type() вы можете прочитать на сайте docs.python.org

Команда type

Есть ещё полезная команда type которая решает другую задачу.

С помощью команды type можно, например, определить куда установлен Python.

Подробнее об этом можете прочитать здесь

type python3

python3 is hashed (/usr/bin/python3)

type python

python3 is hashed (/usr/bin/python)

isinstance()

Кроме type() в Python есть функция isinstance(), с помощью которой можно проверить не относится ли переменная к какому-то определённому типу.

Иногда это очень удобно, а если нужно - всегда можно на основе isinstance() написать свою функцию.

Пример использования

Создадим пять переменных разного типа и проверим работу функции

var_int = 1380 var_str = 'heihei.ru' var_bool = True var_list = ['heihei.ru','topbicycle.ru','urn.su'] var_tuple = ('andreyolegovich.ru', 'aredel.com') if (isinstance(var_int, int)): print(f"{var_int} is int") else: print(f"{var_int} is not int") if (isinstance(var_str, str)): print(f"{var_str} is str") else: print(f"{var_str} is not str") if (isinstance(var_bool, bool)): print(f"{var_bool} is bool") else: print(f"{var_bool} is not bool") if (isinstance(var_list, list)): print(f"{var_list} is list") else: print(f"{var_list} is not list") if (isinstance(var_tuple, tuple)): print(f"{var_tuple} is tuple") else: print(f"{var_tuple} is not tuple")

Результат

1380 is int heihei.ru is str True is bool ['heihei.ru', 'topbicycle.ru', 'urn.su'] is list ('andreyolegovich.ru', 'aredel.com') is tuple

Из isinstance() можно сделать аналог type()

Напишем свою фукнцию по определению типа typeof() на базе isinstance

def typeof(your_var): if (isinstance(your_var, int)): return 'int' elif (isinstance(your_var, bool)): return 'bool' elif (isinstance(your_var, str)): return 'str' elif (isinstance(your_var, list)): return 'list' elif (isinstance(your_var, tuple)): return 'tuple' else: print("type is unknown")

Протестируем нашу функцию

print(f"var_list is {typeof(var_list)}")

var_list is list

Принадлежность к одному из нескольких типов

Если нужно проверить принадлежит ли объект не к какому-то одному, а к группе типов, эти типы можно перечислить в скобках.

Часто бывает нужно проверить является ли объект числом, то есть подойдёт как int, так и float

print(isinstance(2.0, (int, float)))

True

Проверим несколько значений из списка

l3 = [1.5, -2, "www.heihei.ru"] for item in l3: print(isinstance(item, (int, float)))

True
True
False

Проверка списка или другого iterable

Часто бывает нужно проверить не одну переменную а целый список, множество, кортеж или какой-то другой объект.

Эту задачу можно решить с помощью isinstance() и функций:

Проверить все ли элементы списка l1 int

l1 = [1, 2, 3] if all(map(lambda p: isinstance(p, int), l1)): print("all int in l1")

all int in l1

Проверить несколько списков на int и float

l1 = [3, -4.0, 5.5, -6.2] l2 = [1, -2, "test"] def verif_list(l): return(all(map(lambda p: isinstance(p, (int, float)), l))) if __name__ == "__main__": print(verif_list(l1)) print(verif_list(l2))

True
False

Помимо isinstance() в Python есть функция issubclass() с помощью которой проверяется является один класс производным от другого.

В других языках

Похожие статьи
Python
Интерактивный режим
str: строки
\: перенос строки
Списки []
if, elif, else
Циклы
Функции
try except
Пакеты
*args **kwargs
ООП
enum
Тестирование с помощью Python
Работа с REST API на Python
Файлы: записать, прочитать, дописать, контекстный менеджер…
Скачать файл по сети
SQLite3: работа с БД
datetime: Дата и время в Python
json.dumps
Selenium + Python
Сложности при работе с Python
DJANGO
Flask
Скрипт для ZPL принтера
socket :Python Sockets
Виртуальное окружение
subprocess: выполнение bash команд из Python
multiprocessing: несколько процессов одновременно
psutil: cистемные ресурсы
sys.argv: аргументы командной строки
PyCharm: IDE
pydantic: валидация данных
paramiko: SSH из Python
enumerate
logging: запись в лог
Обучение программированию на Python
Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Хотите поддержать сайт материально
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......