Pythonの変数の型を決めるには?

符号なし32ビット、符号あり16ビットなど、変数の型を確認するにはどうしたらいいですか?

どうやって表示するのですか?

type()`関数をお探しの方もいらっしゃるでしょう。

下の例を見てください。しかし、PythonにはJavaのように「符号なし」の型はありません。

正の整数です。

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

大きな正の整数。

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

負の整数

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

リテラルな文字の並び。

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

浮動小数点の整数。

>>> v = 3.14159
>>> type(v)
解説 (1)
print type(variable_name)

また、このような質問には IPython という対話型インタープリタを強くお勧めします。IPython]1は、変数名?と入力すると、型や型のためのdoc文字列を含む、オブジェクトに関する情報の全リストを返してくれます。

例えば、以下のようになります。

In [9]: var = 123

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

可能であれば、文字列または数値を整数に変換します。 浮動小数点の引数はゼロに向かって切り捨てられます(浮動小数点数の文字列表現は含まれません)。 表現は含まれません!)。 文字列を変換する際には、オプションの base を使用します。 文字列でないものを変換するときにbaseを指定するとエラーになります。 文字列でないものを変換するときにベースを指定するのはエラーです。引数が整数の範囲外の場合は,代わりにlongオブジェクト が代わりに返されます。

解説 (4)

この質問はやや曖昧です -- あなたが「ビュー」で何を意味しているのかわかりません。もしあなたがPythonのネイティブオブジェクトの型をクエリしようとしているのであれば、@atzzの回答があなたを正しい方向に導いてくれるでしょう。

しかし、(uint32_tint16_t のような) C 言語のプリミティブな型のセマンティクスを持つ Python オブジェクトを 生成 しようとしているのであれば、struct モジュールを使用してください。与えられたC型プリミティブのビット数は次のようにして求めることができます。

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

これは,arrayモジュールにも反映されていて,これらの低次元の型の配列を作ることができます.

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

サポートされる最大の整数(Python 2のint)は[sys.maxint][3]で与えられます。

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

残存メモリ内の Python オブジェクトの実際のサイズを返す [sys.getizeof][4]もあります。

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

浮動小数点データや高精度データの場合は、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)

[3]: http://docs.python.org/library/sys.html#sys.maxsize [4]: http://docs.python.org/library/sys.html#sys.getsizeof

解説 (1)