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

Task-> Generate Scripts ... in Advanced в разделе «Типы данных для скрипта» выберите «Shema and data» и попробуйте запустить этот скрипт в своей нижней версии

1313
задан garg10may 16 September 2017 в 09:37
поделиться

7 ответов

Python не имеет тех же типов как C/C++, который, кажется, Ваш вопрос.

Попытка это:

>>> i = 123
>>> type(i)
<type 'int'>
>>> type(i) is int
True
>>> i = 123456789L
>>> type(i)
<type 'long'>
>>> type(i) is long
True
>>> i = 123.456
>>> type(i)
<type 'float'>
>>> type(i) is float
True

различие между интервалом и долго уходит в Python 3.0, все же.

1179
ответ дан gregjor 16 September 2017 в 09:37
поделиться

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

15
ответ дан atzz 16 September 2017 в 09:37
поделиться

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

10
ответ дан Benjamin Peterson 16 September 2017 в 09:37
поделиться

Вы имеете в виду в Python или использование ctypes?

В первом случае, Вы просто не можете - потому что Python не имеет целых чисел на 16/32 бита, со знаком/неподписанных.

Во втором случае, можно использовать type():

>>> import ctypes
>>> a = ctypes.c_uint() # unsigned int
>>> type(a)
<class 'ctypes.c_ulong'>

Для более ссылочного на ctypes, его типе, см. официальная документация .

18
ответ дан Peter Mortensen 16 September 2017 в 09:37
поделиться
print type(variable_name)

я также настоятельно рекомендую IPython интерактивный интерпретатор при контакте с вопросами как это. Это позволяет Вам тип variable_name? и возвратит целый список информации об объекте включая тип и строку документа для типа.

, например,

In [9]: var = 123

In [10]: var?
Type:       int
Base Class: <type 'int'>
String Form:    123
Namespace:  Interactive
Docstring:
    int(x[, base]) -> integer

Преобразовывают строку или число к целому числу, если это возможно. Аргумент с плавающей точкой будет усеченным по направлению к нулю (это не включает строковое представление числа с плавающей точкой!) При преобразовании строки, используйте дополнительную основу. Это - ошибка предоставить основу при преобразовании нестроки. Если аргумент будет вне целочисленного диапазона, то длинный объект будет возвращен вместо этого.

55
ответ дан Community 16 September 2017 в 09:37
поделиться

Вопрос несколько неоднозначен - я не уверен, что Вы подразумеваете под "представлением". Если Вы попробуете к [1 115] запрос тип собственного объекта Python, , то ответ @atzz регулирует Вас в правильном направлении.

Однако, если Вы пробуете к [1 116], генерируют объекты Python, которые имеют семантику примитивных C-типов, (такой как uint32_t, int16_t), используют struct модуль. Можно определить число битов в данном C-типе, примитивном таким образом:

>>> struct.calcsize('c') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4

Это также отражается в array модуль, который может сделать массивы этих типов низшего уровня:

>>> array.array('c').itemsize # char
1

максимальное целое число, поддерживаемое (Python 2 int), дано [1 112] sys.maxint.

>>> import sys, math
>>> math.ceil(math.log(sys.maxint, 2)) + 1 # Signedness
32.0

существует также sys.getsizeof, который возвращает фактический размер объект Python в остаточной памяти:

>>> a = 5
>>> sys.getsizeof(a) # Residual memory.
12

Для данных плавающих и данных точности, используйте sys.float_info:

>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.2204460492503131e-16, radix=2, rounds=1)
24
ответ дан Community 16 September 2017 в 09:37
поделиться

Можно искать эти type() функция.

Видят примеры ниже, но нет никакого "неподписанного" типа в Python точно так же, как Java.

Положительное целое число:

>>> v = 10
>>> type(v)
<type 'int'>

Большой положительное целое число:

>>> v = 100000000000000
>>> type(v)
<type 'long'>

Отрицательное целое число:

>>> v = -10
>>> type(v)
<type 'int'>

Литеральная последовательность символов:

>>> v = 'hi'
>>> type(v)
<type 'str'>

целое число С плавающей точкой:

>>> v = 3.14159
>>> type(v)
<type 'float'>
385
ответ дан 3 revs, 2 users 68% 16 September 2017 в 09:37
поделиться
  • 1
    Необходимо поместить одинарные или двойные кавычки вокруг команд, иначе эти pwd будет вне контейнера. RUN 'cd tmp123;pwd' – BraveNewCurrency 27 July 2013 в 03:53
Другие вопросы по тегам:

Похожие вопросы: