Как определить тип переменной Python? - PullRequest
1267 голосов
/ 31 декабря 2008

Как узнать тип переменной: 32-разрядная без знака, 16-разрядная со знаком и т. Д .?

Как мне посмотреть?

Ответы [ 16 ]

15 голосов
/ 31 декабря 2008

Python не имеет таких типов, как вы описываете. Существует два типа, используемых для представления целочисленных значений: int, что соответствует типу int платформы в C, и long, которое является целым числом произвольной точности (то есть оно растет по мере необходимости и не имеет верхнего предела). int s автоматически преобразуются в long, если выражение дает результат, который нельзя сохранить в int.

10 голосов
/ 09 марта 2019
a = "cool"
type(a)
//result
<class 'str'>

or do `dir(a)` to see the list of inbuilt methods you can have on the variable.
10 голосов
/ 09 апреля 2017

Простой, для Python 3.4 и выше

print (type(variable_name))

Python 2.7 и выше

print type(variable_name)
10 голосов
/ 31 декабря 2008

Это действительно зависит от того, какой уровень вы имеете в виду. В Python 2.x есть два целочисленных типа: int (ограничено sys.maxint) и long (неограниченная точность) по историческим причинам. В коде Python это не должно иметь большого значения, потому что интерпретатор автоматически конвертирует в long, когда число слишком велико. Если вы хотите узнать о фактических типах данных, используемых в базовом интерпретаторе, это зависит от реализации. (CPython находятся в Objects / intobject.c и Objects / longobject.c.) Чтобы узнать о типах систем, посмотрите ответ cdleary для использования модуля struct.

6 голосов
/ 28 сентября 2017

Для python2.x используйте

print type(variable_name)

Для python3.x используйте

print(type(variable_name))
0 голосов
/ 19 февраля 2019

Только не делай этого. Просить что-то типа неправильно само по себе. Вместо этого используйте полиморфизм. Найдите или, при необходимости, определите самостоятельно метод, который делает то, что вы хотите для любого возможного типа ввода, и просто вызывайте его, ничего не спрашивая. Если вам нужно работать со встроенными типами или типами, определенными сторонней библиотекой, вы всегда можете наследовать их и использовать вместо этого собственные производные. Или вы можете обернуть их в своем классе. Это объектно-ориентированный способ решения таких проблем.

Если вы настаиваете на проверке точного типа и размещении грязных if здесь и там, вы можете использовать свойство __class__ или type, чтобы сделать это, но вскоре вы обнаружите, что обновляете все эти if с дополнительными случаями каждые два или три коммита. Делая это, OO предотвращает это и позволяет вместо этого определять новый класс только для нового типа ввода.

...