Come determinare il tipo di una variabile Python?

Come faccio a vedere il tipo di una variabile se è unsigned 32 bit, signed 16 bit, ecc.

Come faccio a visualizzarlo?

Forse state cercando la funzione type().

Vedi gli esempi qui sotto, ma non c'è un tipo "unsigned" in Python proprio come Java.

Intero positivo:

>>> v = 10
>>> type(v)

Grande intero positivo:

>>> v = 100000000000000
>>> type(v)

Intero negativo:

>>> v = -10
>>> type(v)

Sequenza letterale di caratteri:

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

Intero in virgola mobile:

>>> v = 3.14159
>>> type(v)
Commentari (1)
print type(variable_name)

Raccomando anche caldamente l'interprete interattivo IPython quando si tratta di domande come questa. Vi permette di digitare nome_di_variabile? e vi restituirà un'intera lista di informazioni sull'oggetto, incluso il tipo e la stringa doc per il tipo.

Per esempio

In [9]: var = 123

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

Converte una stringa o un numero in un intero, se possibile. Un argomento in virgola mobile sarà troncato verso lo zero (questo non include una stringa di un numero in virgola mobile). Quando si converte una stringa, usare la base opzionale. È un errore fornire una base quando si converte una non stringa. Se l'argomento è al di fuori dell'intervallo di interi, un oggetto long verrà restituito al suo posto.

Commentari (4)

La domanda è un po' ambigua -- non sono sicuro di cosa intendi per "vista". Se stai cercando di chiedere il tipo di un oggetto Python nativo, la risposta di @atzz'ti guiderà nella giusta direzione.

Tuttavia, se state cercando di generare oggetti Python che hanno la semantica dei tipi primitivi C, (come uint32_t, int16_t), usate il modulo struct. Potete determinare il numero di bit in una data primitiva di tipo C in questo modo:

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

Questo si riflette anche nel modulo array, che può creare array di questi tipi di livello inferiore:

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

Il massimo numero intero supportato (Python 2's int) è dato da sys.maxint.

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

C'è anche sys.getsizeof, che restituisce la dimensione effettiva dell'oggetto Python nella memoria residua:

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

Per i dati float e i dati di precisione, usate 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)
Commentari (1)