Ako zistím typ premennej, či je 32-bitová bez znamienka, 16-bitová so znamienkom atď.?
Ako ho môžem zobraziť?
Možno hľadáte funkciu type()
.
Pozrite si príklady nižšie, ale v Pythone neexistuje typ "unsigned" rovnako ako v Jave.
Kladné celé číslo:
>>> v = 10
>>> type(v)
<type 'int'>
Veľké kladné celé číslo:
>>> v = 100000000000000
>>> type(v)
<type 'long'>
Záporné celé číslo:
>>> v = -10
>>> type(v)
<type 'int'>
Doslovná postupnosť znakov:
>>> v = 'hi'
>>> type(v)
<type 'str'>
Celé číslo s pohyblivou rádovou čiarkou:
>>> v = 3.14159
>>> type(v)
<type 'float'>
print type(variable_name)
Pri riešení podobných otázok odporúčam aj interaktívny interpret IPython. Umožní vám zadať názov_premennej?
a vráti celý zoznam informácií o objekte vrátane typu a reťazca doc pre daný typ.
Napr.
In [9]: var = 123
In [10]: var?
Type: int
Base Class: <type 'int'>
String Form: 123
Namespace: Interactive
Docstring:
int(x[, base]) -> integer
Ak je to možné, preveďte reťazec alebo číslo na celé číslo. Argument s pohyblivou rádovou čiarkou sa skráti smerom k nule (to sa netýka reťazca reprezentáciu čísla s pohyblivou rádovou čiarkou!) Pri konverzii reťazca použite nepovinný základ. Zadanie základu pri konverzii je chybou. ako reťazec. Ak je argument mimo rozsahu celých čísel, objekt long bude namiesto neho vrátený objekt.
Otázka je trochu nejednoznačná - nie som si istý, čo myslíte tým "view". Ak sa snažíte pýtať na typ natívneho objektu Pythonu, @atzz'odpoveď vás navedie správnym smerom.
Ak sa však snažíte generovať objekty jazyka Python, ktoré majú sémantiku primitívnych typov jazyka C (napríklad uint32_t
, int16_t
), použite modul struct
. Počet bitov v danom primitíve typu C môžete určiť takto:
>>> struct.calcsize('c') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4
To sa odráža aj v module array
, ktorý môže vytvárať polia týchto typov nižšej úrovne:
>>> array.array('c').itemsize # char
1
Maximálne podporované celé číslo (Python 2's int
) je dané sys.maxint.
>>> import sys, math
>>> math.ceil(math.log(sys.maxint, 2)) + 1 # Signedness
32.0
Existuje aj sys.getsizeof, ktorý vracia skutočnú veľkosť objektu Pythonu v zostatkovej pamäti:
>>> a = 5
>>> sys.getsizeof(a) # Residual memory.
12
Pre údaje typu float a presné údaje použite 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)