Jak zjistím typ proměnné, zda je 32bitová bez znaménka, 16bitová se znaménkem atd.?
Jak to mohu zobrazit?
Možná hledáte funkci type()
.
Viz příklady níže, ale v Pythonu neexistuje žádný typ "unsigned" stejně jako v Javě.
Kladné celé číslo:
>>> v = 10
>>> type(v)
<type 'int'>
Velké kladné celé číslo:
>>> v = 100000000000000
>>> type(v)
<type 'long'>
Záporné celé číslo:
>>> v = -10
>>> type(v)
<type 'int'>
Doslovná posloupnost znaků:
>>> v = 'hi'
>>> type(v)
<type 'str'>
Celé číslo s pohyblivou řádovou čárkou:
>>> v = 3.14159
>>> type(v)
<type 'float'>
print type(variable_name)
Při řešení podobných otázek také vřele doporučuji interaktivní interpret IPython. Umožňuje zadat jméno_proměnné?
a vrátí celý seznam informací o objektu včetně typu a řetězce doc pro daný typ.
Např.
In [9]: var = 123
In [10]: var?
Type: int
Base Class: <type 'int'>
String Form: 123
Namespace: Interactive
Docstring:
int(x[, base]) -> integer
Pokud je to možné, převeďte řetězec nebo číslo na celé číslo. Argument s pohyblivou řádovou čárkou bude zkrácen směrem k nule (to se netýká řetězce reprezentace čísla s pohyblivou řádovou čárkou!) Při převodu řetězce použijte nepovinný základ. Zadání základu při převodu znaku je chybou. který není řetězcem. Pokud je argument mimo rozsah celých čísel, vytvoří se objekt long bude vrácen místo něj.
Otázka je poněkud nejednoznačná - nejsem si jistý, co myslíte tím "view". Pokud se snažíte dotazovat na typ nativního objektu Pythonu, @atzz'odpověď vás navede správným směrem.
Pokud se však snažíte generovat objekty jazyka Python, které mají sémantiku primitivních typů jazyka C, (například uint32_t
, int16_t
), použijte modul struct
. Počet bitů v daném primitivu typu C můžete určit takto:
>>> struct.calcsize('c') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4
To se odráží i v modulu array
, který umí vytvářet pole těchto typů nižší úrovně:
>>> array.array('c').itemsize # char
1
Maximální podporované celé číslo (Python 2's int
) je dáno sys.maxint.
>>> import sys, math
>>> math.ceil(math.log(sys.maxint, 2)) + 1 # Signedness
32.0
Existuje také sys.getsizeof, který vrací skutečnou velikost objektu Pythonu ve zbytkové paměti:
>>> a = 5
>>> sys.getsizeof(a) # Residual memory.
12
Pro float data a data s přesností použijte 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)