如何肯定Python变量的类型?

如何查看变量的类型,不管是无符号32位,带符号16位等等? html

我该如何看待它? python


#1楼

这可能有点可有可无。 但你能够检查类型与对象的isinstance(object, type)为提到这里函数


#2楼

使用__class__一种方法: spa

>>> a = [1, 2, 3, 4]
>>> a.__class__
<type 'list'>
>>> b = {'key1': 'val1'}
>>> b.__class__
<type 'dict'>
>>> c = 12
>>> c.__class__
<type 'int'>

#3楼

这很简单。 你这样作。 code

print(type(variable_name))

#4楼

如何在Python中肯定变量类型?

因此,若是你有一个变量,例如: orm

one = 1

你想知道它的类型吗? htm

在Python中,有正确的方法和错误的方法来作全部事情。 这是正确的方法: 对象

使用type

>>> type(one)
<type 'int'>

您可使用__name__属性来获取对象的名称。 (这是使用__dunder__名称所需的少数特殊属性之一 - 在inspect模块中甚至没有方法。) ip

>>> type(one).__name__
'int'

不要使用__class__

在Python中,如下划线开头的名称在语义上不是公共API的一部分,而且这是用户避免使用它们的最佳实践。 (除非绝对必要。) get

因为type给出了对象的类,咱们应该避免直接获得它。 :

>>> one.__class__

这一般是人们在访问方法中的对象类型时的第一个想法 - 他们已经在寻找属性,所以类型彷佛很奇怪。 例如:

class Foo(object):
    def foo(self):
        self.__class__

别。 相反,请键入(self):

class Foo(object):
    def foo(self):
        type(self)

整数和浮动的实现细节

如何查看变量的类型,不管是无符号32位,带符号16位等等?

在Python中,这些细节是实现细节。 因此,通常来讲,咱们一般不会在Python中担忧这一点。 可是,知足你的好奇心......

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

例如,在32位Python 2中,咱们能够推断出int是带符号的32位整数:

>>> import sys

>>> format(sys.maxint, '032b')
'01111111111111111111111111111111'
>>> format(-sys.maxint - 1, '032b') # minimum value, see docs.
'-10000000000000000000000000000000'

在Python 3中,旧的int消失了,咱们只使用(Python的)long做为int,它具备无限的精度。

咱们还能够得到有关Python浮点数的一些信息,这些浮点数一般在C中实现为double

>>> 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)

结论

不要使用__class__ (一种语义上不公开的API)来获取变量的类型。 使用type来代替。

而且不要过多担忧Python的实现细节。 我本身没必要处理这个问题。 你可能也不会,若是你真的这样作,你应该知道不要为这个答案寻找答案。


#5楼

您可能正在寻找type()函数。

请参阅下面的示例,但Python中没有像Java那样的“unsigned”类型。

正整数:

>>> v = 10
>>> type(v)
<type 'int'>

正整数:

>>> v = 100000000000000
>>> type(v)
<type 'long'>

负整数:

>>> v = -10
>>> type(v)
<type 'int'>

字面字符序列:

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

浮点整数:

>>> v = 3.14159
>>> type(v)
<type 'float'>
相关文章
相关标签/搜索