2017-06-12 22 views
1

我可以假设python内置的类型对象总是一样吗? 实施例:python的内置类型是独一无二的

type([]) == type([1,2,3,4]) == type([{1:1}, True]) 
type(5) == type(0) == type(2**18) == type(-951) 

如果是这样,我可以用“是”,而不是“==”进行比较时,类型对象? 问题在于所有内建类型。

在此先感谢!

+0

明确检查类型将拒绝所有的子类。如果你需要做类型检查而不是鸭子打字,一般你应该使用'isinstance'和'issubclass'。 – eryksun

回答

1

在Python 2中: 一般来说,是的。但是,整数是一个例外:有两种不同类型的整数:int s和long s。后者能够保持整数达到任意大小,而前者只能保持-2**312**31-1之间的整数。

因此,例如,type(3) is type(2**50)将返回False。但是,如果您使用==而不是is,它将返回False

+0

太好了,谢谢你的评论 – NI6

+2

Python 2'int'基于C'long'。在Windows上,你总是提到'-2 ** 31'到'2 ** 31-1'范围,但是在64位Linux上,范围是'-2 ** 63'到'2 ** 63-1 ',你的例子不起作用。一般来说,你应该将'int'范围引用为'sys.maxint - 1'到'sys.maxint'。 Python 3更简单;只有一个'int'类型,基本上这个'long'类型被重命名为'int'。 – eryksun