Тип значения переменной python

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

Изображение баннера

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

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

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

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

type()

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

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

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

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

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

  • int (signed integers)
  • float (вещественные числа с плавающей точкой)
  • complex (комплексные числа)

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

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))

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

# 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))

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

Команда type

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

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

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

python3 is hashed (/usr/bin/python3)

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»)

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

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

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

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

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

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

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

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

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

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

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

l1 = [ 1 , 2 , 3 ] if all ( map ( lambda p: isinstance (p, int ), l1)): print ( «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))

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

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

  • Си: такой функции нет.
  • C++: похожую задачу решает функция typeid()

Источник

Читайте также:  Php секунды в timestamp
Оцените статью