Hoe kan ik het type van een variabele zien, of het nu unsigned 32 bit, signed 16 bit, enz. is?
Hoe kan ik dat zien?
Je bent misschien op zoek naar de type()
functie.
Zie de voorbeelden hieronder, maar er'is geen "unsigned" type in Python, net als in Java.
Positief geheel getal:
>>> v = 10
>>> type(v)
<type 'int'>
Groot positief geheel getal:
>>> v = 100000000000000
>>> type(v)
<type 'long'>
Negatief geheel getal:
>>> v = -10
>>> type(v)
<type 'int'>
Letterlijke opeenvolging van tekens:
>>> v = 'hi'
>>> type(v)
<type 'str'>
Een geheel getal met drijvende komma:
>>> v = 3.14159
>>> type(v)
<type 'float'>
print type(variable_name)
Ik kan ook de IPython interactieve interpreter van harte aanbevelen als je met dit soort vragen te maken krijgt. Het laat je variabele_naam?
intypen en zal een hele lijst met informatie over het object teruggeven, inclusief het type en de doc string voor het type.
bijv.
In [9]: var = 123
In [10]: var?
Type: int
Base Class: <type 'int'>
String Form: 123
Namespace: Interactive
Docstring:
int(x[, base]) -> integer
Converteer een string of getal naar een geheel getal, indien mogelijk. Een drijvende komma argument zal worden afgekapt naar nul (dit geldt niet voor een string representatie van een drijvend komma-getal!) Gebruik bij het omzetten van een tekenreeks de optionele basis. Het is een fout om een basis mee te geven bij het converteren van een niet-tekenreeks. Indien het argument buiten het gehele getal bereik valt zal een lang object teruggegeven worden.
De vraag is enigszins dubbelzinnig -- ik'ben niet zeker wat je bedoelt met "view". Als je het type van een native Python object probeert te queryen, zal @atzz's antwoord je in de juiste richting sturen.
Als u echter Python objecten probeert te genereren die de semantiek hebben van primitieve C-typen, (zoals uint32_t
, int16_t
), gebruik dan de struct
module. U kunt het aantal bits in een gegeven C-type primitieve op deze manier bepalen:
>>> struct.calcsize('c') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4
Dit is ook terug te vinden in de array
module, die arrays kan maken van deze lagere typen:
>>> array.array('c').itemsize # char
1
Het maximaal ondersteunde gehele getal (Python 2's int
) wordt gegeven door sys.maxint.
>>> import sys, math
>>> math.ceil(math.log(sys.maxint, 2)) + 1 # Signedness
32.0
Er is ook sys.getsizeof, die de werkelijke grootte van het Python object in het resterende geheugen teruggeeft:
>>> a = 5
>>> sys.getsizeof(a) # Residual memory.
12
Voor float data en precisie data, gebruik 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)