¿Cómo puedo ver el tipo de una variable si es de 32 bits sin signo, de 16 bits con signo, etc.?
¿Cómo lo veo?
Puede que estés buscando la función type()
.
Ver los ejemplos de abajo, pero no hay "unsigned" tipo en Python al igual que Java.
Un entero positivo:
>>> v = 10
>>> type(v)
<type 'int'>
Entero positivo grande:
>>> v = 100000000000000
>>> type(v)
<type 'long'>
Número entero negativo:
>>> v = -10
>>> type(v)
<type 'int'>
Secuencia literal de caracteres:
>>> v = 'hi'
>>> type(v)
<type 'str'>
Entero de punto flotante:
>>> v = 3.14159
>>> type(v)
<type 'float'>
print type(variable_name)
También recomiendo encarecidamente el intérprete interactivo IPython cuando se trata de cuestiones como ésta. Te permite escribir nombre_de_la_variable
y te devolverá toda una lista de información sobre el objeto, incluyendo el tipo y la cadena doc para el tipo.
Por ejemplo
In [9]: var = 123
In [10]: var?
Type: int
Base Class: <type 'int'>
String Form: 123
Namespace: Interactive
Docstring:
int(x[, base]) -> integer
Convierte una cadena o un número en un entero, si es posible. Un argumento de punto flotante se truncará hacia cero (¡esto no incluye una representación de cadena de un número en coma flotante). Al convertir una cadena, utilice la base opcional. Es un error proporcionar una base cuando se convierte una que no sea una cadena. Si el argumento está fuera del rango de los enteros, se devolverá un objeto long será devuelto en su lugar.
La pregunta es algo ambigua -- no estoy seguro de lo que quieres decir con "vista". Si estás intentando consultar el tipo de un objeto nativo de Python, la respuesta de @atzz'te orientará en la dirección correcta.
Sin embargo, si estás intentando generar objetos de Python que tienen la semántica de los tipos primitivos de C, (como uint32_t
, int16_t
), utiliza el módulo struct
. Puedes determinar el número de bits de una primitiva de tipo C de la siguiente manera:
>>> struct.calcsize('c') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4
Esto también se refleja en el módulo array
, que puede hacer matrices de estos tipos de nivel inferior:
>>> array.array('c').itemsize # char
1
El máximo entero soportado (Python 2's int
) viene dado por sys.maxint.
>>> import sys, math
>>> math.ceil(math.log(sys.maxint, 2)) + 1 # Signedness
32.0
También existe sys.getsizeof, que devuelve el tamaño real del objeto Python en la memoria residual:
>>> a = 5
>>> sys.getsizeof(a) # Residual memory.
12
Para los datos flotantes y los datos de precisión, utilice 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)