Как узнать тип переменной python
Перейти к содержимому

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

  • автор:

Узнать тип type() и проверить тип isinstance()

В Python у нас утиная динамическая типизация, поэтому бывает что нужно узнать тип переменной. Функция type() возвращает тип аргумента или, учитывая, что в Python – все класс, то класс аргумента. Результат можно сравнить с известным типом:

>>> i, s = 10, "hello" >>> type(i) >>> type(i) is int True >>> type(s) is str True >>> class A: pass . >>> a = A() >>> type(a) is A True

Можно создать экземпляр объекта того же класса, что и переменная:

>>> new_a = type(a)() >>> type(new_a) == type(a) True

⚠️ Нужно знать! type() не принимает во внимание наследование. Тип наследника отличается от типа родителя:

>>> class B(A): pass . >>> type(A()) is type(B()) False

Лучший способ проверить типы – функция isinstance(x, type) (instance англ. – экземпляр). Она возвращает True, если первый аргумент является экземпляром класса во втором аргументе:

>>> isinstance(i, int) True >>> isinstance(s, str) True >>> isinstance(a, A) True

Функция поддерживает наследование:

class A: pass class B(A): pass b = B() >>> isinstance(b, A) True

И самое крутое: вторым аргументом допускается передать кортеж из типов, и isinstance вернет True , если хоть один из типов в кортеже подходит:

>>> isinstance(i, (int, float)) True >>> isinstance(a, (A, B)) True
class A: . a = A() class A: . print(isinstance(a, A))

Правильный ответ был False!

Объяснение. Динамическая натура Python позволяет переопределить класс во время интерпретации. Помните, как недавно я рассказывал про декораторы класса? Там мы подменяли один класс другим. Вот это из той же оперы. Тут мы подменили один класс, другим классом, отвязав имя А от старого класса и привязав его к новому. Старый класс А остался жив только как класс объекта в переменной a . Старого и нового классов разные адреса ( id ):

class A: . print(id(A)) # 140479777819720 a = A() class A: . print(id(A)) # 140479777809672 isinstance(a, A) # False

Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway ��

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

В python узнать тип переменной a можно, вписав команду print(type(a)) . Можно ли в PyCharm узнать тип переменной, наведя на неё мышкой или другим быстрым способом, не набирая строки кода для каждой переменной?

Отслеживать
4,071 1 1 золотой знак 12 12 серебряных знаков 36 36 бронзовых знаков
задан 17 июн 2021 в 22:54
konstantinmakovsky konstantinmakovsky
61 1 1 серебряный знак 6 6 бронзовых знаков
Можно использовать дебаггер в PyCharm и его панель с переменными (jetbrains.com/help/pycharm/…)
17 июн 2021 в 23:19

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Ставишь каретку на переменную -> Ctrl+Shift+P (View -> Type Info). Если не сможет вывести тип будет Any .

type hint popup in PyCharm

Отслеживать
ответ дан 18 июн 2021 в 10:33
Pavel Karateev Pavel Karateev
1,987 1 1 золотой знак 12 12 серебряных знаков 16 16 бронзовых знаков
А не, действительно не так работает, как если просто мышкой навести.
19 июн 2021 в 9:10

Можно использовать типизацию и модуль typing для более сложных типов.

Как пример имеем функцию с описанными типами переменных (их описывать можно не только в функции). PyCharm будет понимать, какая переменная кем является, и предлагать методы для этого типа. Спомощью модуля typing можно описать какие ожидаются элементы внутри iterable объектов, Union типы (когда несколько типов может быть) и тд.

Понимает что переменная строка и предлагает методы для строки.

Понимает что переменная строка и предлагает методы для строки.

Понимает что перменная dict и показывает методы для него

Понимает что переменная dict и показывает методы для него

Понимает что ключ переменно - tuple и показывает методы для него.

Понимает что ключ переменно — tuple и показывает методы для него. и тд

Так же если ввести в функцию недопустимые типы, PyCharm подскажет Вам.

С собственной структурой, аналогично знает что это за переменная и предлагает её атрибуты.

Как узнать тип переменной 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’ , ‘eth1.ru’ ] var_tuple = ( ‘eth1.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’ , ‘eth1.ru’ ] var_tuple = ( ‘eth1.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’, ‘eth1.ru’] is list (‘eth1.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»)

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

var_list is list

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

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

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

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

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

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

Проверить несколько списков на 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()

Типы данных в Python: какие они бывают и как их различать

Виртуальное окружение в разработке на языке Python

Моё мнение про Python

Операторы в Python: какие они бывают, как работают и где используются

Основные аспекты изучения Python

В Python типы данных — это категории, которые определяют характеристики и поведение значений, использованных в программе. Python поддерживает различные типы данных, каждый из которых представляет определенный вид информации.

Базовые типы данных в Python

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

Числовые типы данных

— `int` (integer) — целые числа.

```python age = 25 count = 100 ```

— `float` (floating-point) — числа с плавающей точкой.

```python pi = 3.14 temperature = 98.6 ```

Строковый тип данных

— `str` (string) — последовательность символов, заключенных в кавычки.

```python name = "Alice" message = 'Привет, мир!' ```

Логический тип данных

— `bool` (boolean) — логические значения `True` (истина) и `False` (ложь).

```python is_student = True is_adult = False ```

Списки

— `list` — упорядоченная изменяемая коллекция элементов, которые могут быть разных типов.

```python numbers = [1, 2, 3, 4, 5] fruits = ['яблоко', 'банан', 'груша'] ```

Кортежи

— `tuple` — упорядоченная неизменяемая коллекция элементов, которые могут быть разных типов.

```python coordinates = (10, 20) rgb_color = (255, 0, 0) ```

— `dict` (dictionary) — неупорядоченная коллекция пар ключ-значение, позволяющая быстро находить значение по ключу.

```python person = grades = ```

Множества

— `set` — неупорядоченная коллекция уникальных элементов.

```python colors = fruits_set = set(['яблоко', 'банан', 'груша']) ```

Каждый из этих базовых типов данных имеет свои особенности и применение в программировании. От выбора правильного типа данных зависит эффективность и функциональность вашего кода.

�� Готовы устроиться на высокооплачиваемую работу программиста?��

��Стартуйте с Python Start — онлайн курс от Foxminded, который откроет двери в мир Python.

Числовые типы данных в Python

В Python существуют два основных числовых типа данных: `int` (целые числа) и `float` (числа с плавающей точкой). Оба типа представляют числовые значения, но имеют некоторые отличия в своих свойствах и использовании.

`int` (целые числа)

— `int` представляет целые числа без дробной части.

— Примеры: 1, -5, 1000, 0.

— Целые числа могут быть положительными, отрицательными или нулем.

— `int` не имеет ограничения по размеру и может представлять целые числа произвольной длины.

Примеры использования `int`:

```python age = 25 quantity = 100 ```

`float` (числа с плавающей точкой)

— `float` представляет числа с плавающей точкой, т.е. числа с дробной частью.

— Примеры: 3.14, -0.5, 2.0, 1.23e-5 (научная нотация).

— `float` используется для представления вещественных чисел и результатов арифметических операций, в которых присутствует дробная часть.

Примеры использования `float`:

```python pi = 3.14 temperature = 98.6 ```

Общие операции с числовыми типами данных

1. Арифметические операции: `+` (сложение), `-` (вычитание), `*` (умножение), `/` (деление), `**` (возведение в степень).

```python a = 10 b = 3 result_sum = a + b # 13 result_sub = a — b # 7 result_mul = a * b # 30 result_div = a / b # 3.33333. result_power = a ** b # 1000 ```

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

— Иногда может потребоваться преобразовать числовой тип данных из `int` в `float` или наоборот.

```python x = 5 y = 2.5 int_x = int(y) # 2 float_y = float(x) # 5.0 ```

3. Округление чисел.

— В Python есть функции `round()` и `int()` для округления чисел.

```python number = 3.6 rounded_number = round(number) # 4 integer_part = int(number) # 3 ```

Числовые типы данных в Python используются для выполнения математических операций, хранения количественной информации и представления результатов вычислений. Они играют важную роль в программировании и широко применяются в различных задачах, таких как вычисления, статистика, финансы, и многое другое.

Неизменяемые типы данных в Python

В Python неизменяемые типы данных — это типы данных, значения которых нельзя изменить после их создания. Когда переменной присваивается значение неизменяемого типа данных, нельзя изменить это значение напрямую. Вместо этого, если необходимо изменить значение, создается новый объект с новым значением.

Вот некоторые из основных неизменяемых типов данных в Python:

Числовые типы данных (`int`, `float`)

— Числовые типы данных в Python являются неизменяемыми. После создания переменной с числовым значением, это значение нельзя изменить.

```python x = 5 y = 3.14 x = 10 # Правильно: создается новый объект с новым значением y = y + 1 # Правильно: создается новый объект с новым значением ```

Строковый тип данных (`str`)

— Строки в Python также являются неизменяемыми. Когда создается строковая переменная, нельзя изменить ее символы напрямую.

```python message = "Привет" # Неправильно: нельзя изменить символы в строке message[0] = "п" # Правильно: создается новый объект с новым значением new_message = "п" + message[1:] ```

Кортежи (`tuple`)

— Кортежи являются неизменяемыми коллекциями элементов. После создания кортежа его элементы не могут быть изменены.

```python coordinates = (10, 20) # Неправильно: нельзя изменить элементы кортежа coordinates[0] = 5 # Правильно: создается новый кортеж с новыми значениями new_coordinates = (5, coordinates[1]) ```

Неизменяемые типы данных обеспечивают безопасность и предсказуемость программы, так как они не могут быть случайно изменены в процессе выполнения кода. Это также позволяет использовать неизменяемые объекты в качестве ключей словарей и элементов множеств, так как их значения остаются постоянными.

Примитивные типы данных в Python

В Python термин «примитивные типы данных» обычно не используется, как, например, в языках программирования C или Java. Вместо этого, в Python используются базовые (или встроенные) типы данных, которые представляют основные категории информации, с которыми можно работать в программе. Вот основные базовые типы данных в Python и их роли в программировании:

Числовые типы данных (`int`, `float`)

  • `int` представляет целые числа без дробной части, а `float` представляет числа с плавающей точкой (с дробной частью).
  • Числовые типы данных используются для выполнения математических операций, хранения количественной информации и представления результатов вычислений.

Строковый тип данных (`str`)

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

Логический тип данных (`bool`)

Примитивные типы данных в Python

  • `bool` представляет логические значения `True` (истина) и `False` (ложь).
  • Логические типы данных используются для выполнения условных операций и принятия решений в программе.

Похожие материалы

Виртуальное окружение в разработке на языке Python

Моё мнение про Python

Операторы в Python: какие они бывают, как работают и где используются

Основные аспекты изучения Python

Какие основные встроенные типы данных представлены в Python?

В Python есть несколько встроенных типов данных, включая int (целые числа), float (вещественные числа), str (строки), list (списки), tuple (кортежи) и dict (словари).

Что такое изменяемые и неизменяемые типы данных?

Изменяемые типы данных (например, списки и словари) можно модифицировать после их создания, в то время как неизменяемые (например, строки и кортежи) — нет.

Как преобразовать строку в число и наоборот?

Для преобразования строки в число используйте функции int() или float(), а для преобразования числа в строку — str().

Что такое кортежи и как они отличаются от списков?

Кортежи — это неизменяемые последовательности. Основное отличие от списков заключается в том, что кортежи неизменяемы, а списки — изменяемы.

Как проверить тип переменной в Python?

Вы можете использовать встроенную функцию type().

Что такое динамическая типизация в Python?

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *