Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定Python变量';s型?_Python_Types_Unsigned_Signed_16 Bit - Fatal编程技术网

如何确定Python变量';s型?

如何确定Python变量';s型?,python,types,unsigned,signed,16-bit,Python,Types,Unsigned,Signed,16 Bit,如何查看变量的类型,无论是无符号32位、有符号16位等 如何查看它?您可能正在寻找内置函数 请参见下面的示例,但是Python中没有像Java一样的“unsigned”类型 正整数: >>> v = 10 >>> type(v) <type 'int'> >>> v = 100000000000000 >>> type(v) <type 'long'> >>> v = -10 &

如何查看变量的类型,无论是无符号32位、有符号16位等


如何查看它?

您可能正在寻找内置函数

请参见下面的示例,但是Python中没有像Java一样的“unsigned”类型

正整数:

>>> v = 10
>>> type(v)
<type 'int'>
>>> v = 100000000000000
>>> type(v)
<type 'long'>
>>> v = -10
>>> type(v)
<type 'int'>
>v=10
>>>类型(v)
大正整数:

>>> v = 10
>>> type(v)
<type 'int'>
>>> v = 100000000000000
>>> type(v)
<type 'long'>
>>> v = -10
>>> type(v)
<type 'int'>
>>v=1000000000000
>>>类型(v)
负整数:

>>> v = 10
>>> type(v)
<type 'int'>
>>> v = 100000000000000
>>> type(v)
<type 'long'>
>>> v = -10
>>> type(v)
<type 'int'>
>v=-10
>>>类型(v)
字符的文字顺序:

>>> v = 'hi'
>>> type(v)
<type 'str'>
>v='hi'
>>>类型(v)
浮点整数:

>>> v = 3.14159
>>> type(v)
<type 'float'>
>>> import sys

>>> format(sys.maxint, '032b')
'01111111111111111111111111111111'
>>> format(-sys.maxint - 1, '032b') # minimum value, see docs.
'-10000000000000000000000000000000'
>v=3.14159
>>>类型(v)
在处理此类问题时,我也强烈推荐交互式口译员。它允许您键入
variable\u name?
,并将返回有关对象的完整信息列表,包括类型和类型的文档字符串

e、 g

[9]中的
var=123
在[10]:var?
类型:int
基类:
字符串形式:123
名称空间:交互式
文档字符串:
int(x[,基])->整数
如果可能,将字符串或数字转换为整数。浮点参数将被截断为零(这不包括字符串) 表示浮点数!)转换字符串时,请使用可选的基。转换数据时提供基是错误的 非字符串。如果参数超出整数范围,则为长对象
将被返回。

这个问题有点模棱两可——我不确定你所说的“视图”是什么意思。如果您试图查询本机Python对象的类型,那么这个问题的答案将引导您朝着正确的方向前进

但是,如果您试图生成具有基本C类型语义的Python对象(例如
uint32\u t
int16\u t
),请使用模块。您可以通过以下方式确定给定C类型原语中的位数:

>>> struct.calcsize('c') # char
1
>>> struct.calcsize('h') # short
2
>>> struct.calcsize('i') # int
4
>>> struct.calcsize('l') # long
4
这也反映在
数组
模块中,该模块可以生成以下较低级别类型的数组:

>>> array.array('c').itemsize # char
1
支持的最大整数(Python2的
int
)由给出

还有,它返回剩余内存中Python对象的实际大小:

>>> a = 5
>>> sys.getsizeof(a) # Residual memory.
12
对于浮点数据和精度数据,请使用:

你的意思是用还是用

在第一种情况下,您根本不能,因为Python没有带符号/无符号的16/32位整数

在第二种情况下,可以使用
type()

>>导入ctypes
>>>a=ctypes.c_uint()#无符号整数
>>>类型(a)

有关ctypes的更多参考信息,请参阅。

Python没有您描述的类型。有两种类型用于表示整数值:
int
,它对应于C中平台的int类型;和
long
,它是一个任意精度的整数(即,它根据需要增长,没有上限)<如果表达式生成的结果无法存储在
int
中,则code>ints会自动转换为
long
,请使用内置函数:

>>> i = 123
>>> type(i)
<type 'int'>
>>> type(i) is int
True
>>> i = 123.456
>>> type(i)
<type 'float'>
>>> type(i) is float
True

请注意,Python的类型与C/C++不同,这似乎是您的问题。

这实际上取决于您所指的级别。在Python2.x中,由于历史原因,有两种整数类型,
int
(限制为
sys.maxint
)和
long
(无限制精度)。在Python代码中,这应该没有什么区别,因为当数字太大时,解释器会自动转换为long。如果您想知道底层解释器中使用的实际数据类型,这取决于实现。(CPython位于Objects/intobject.c和Objects/longobject.c中)要了解系统类型,请查看cdleary答案以了解如何使用struct模块。

这可能有点无关。但是,您可以使用前面提到的isinstance(object,type)检查对象的类型。

使用
\uu class\uuuuuuu
还有一种方法:

>>> a = [1, 2, 3, 4]
>>> a.__class__
<type 'list'>
>>> b = {'key1': 'val1'}
>>> b.__class__
<type 'dict'>
>>> c = 12
>>> c.__class__
<type 'int'>
>a=[1,2,3,4]
>>>一节课__
>>>b={'key1':'val1'}
>>>班__
>>>c=12
>>>c._类__

这太简单了。你是这样做的

print(type(variable_name))
如何确定Python中的变量类型? 因此,如果您有一个变量,例如:

one = 1
class Foo(object):
    def foo(self):
        self.__class__
你想知道它的类型吗

在Python中,几乎每件事情都有正确的方法和错误的方法。这是正确的方法:

使用
类型
不要使用
\uuuu类\uuuuu
在Python中,以下划线开头的名称在语义上不是公共API的一部分,用户最好避免使用它们。(绝对必要时除外。)

由于
type
为我们提供了对象的类,我们应该避免直接获取该类:

>>> one.__class__
这通常是人们在方法中访问对象类型时的第一个想法——他们已经在寻找属性了,所以类型看起来很奇怪。例如:

one = 1
class Foo(object):
    def foo(self):
        self.__class__
不要。相反,请键入(self):

int和float的实现细节 如何查看变量的类型,无论是无符号32位、有符号16位等

在Python中,这些细节是实现细节。因此,一般来说,我们在Python中通常不担心这一点。然而,为了满足你的好奇心

在Python 2中,int通常是一个有符号整数,等于实现的宽度(受系统限制)。它通常实现为一个。当整数大于此值时,我们通常将其转换为Python long(精度不限,不要与C long混淆)

例如,在32位Python 2中,我们可以推断int是一个有符号的32位整数:

>>> v = 3.14159
>>> type(v)
<type 'float'>
>>> import sys

>>> format(sys.maxint, '032b')
'01111111111111111111111111111111'
>>> format(-sys.maxint - 1, '032b') # minimum value, see docs.
'-10000000000000000000000000000000'
在Python3中,旧的int消失了,我们只使用(Python的)long作为int,它具有

我们还可以获得一些关于Python浮动的信息,这些浮动通常在C中实现为:

结论 不要使用语义上非公共的API
\uuuu class\uuuu
,来获取变量的类型。改用
类型
<
assert type(variable_name) == int

assert type(variable_name) == bool

assert type(variable_name) == list
print (type(variable_name))
print type(variable_name)
print type(variable_name)
print(type(variable_name))
a = "cool"
type(a)

//result 'str'
<class 'str'>
or 
do 
`dir(a)` 
to see the list of inbuilt methods you can have on the variable.