我们在获取某个对象的时候,如果不知道这个是什么类型的对象,一般我们用 type
来查询是什么类型:
data = "Hello"
print(type(data))#type():获取对象是什么类型
而一般type
返回的基本类型包括:
数值型 int
布尔类型 bool
序列类型(list、tuple)
集合类型(set)
字典类型(dict)
None值
字符串类型(str)
二进制序列类型(bytes)等
如果是要写判断是否是这种类型的时候,可以用isinstance
来判断【是】或者【否】,这个时候我们就得知道,常用的数据类型有哪些?
以下是一些常用的数据类型及其判断方法:
-
整数 (
int
): 表示整数值。a = 10 if isinstance(a, int):print("a 是整数型")
-
浮点数 (
float
): 表示带有小数点的数值。b = 10.1 if isinstance(b, float):print("b 是浮点数")
-
字符串 (
str
): 表示文本数据。c = "Hello, World!" if isinstance(c, str):print("c 是字符串")
-
布尔值 (
bool
): 表示判断是和否的逻辑值True
或False
。d = True if isinstance(d, bool):print("d 是布尔值")
-
列表 (
list
): 有序的集合,可以包含不同类型的元素,可变序列。e = [1, 2, 3] if isinstance(e, list):print("e 是列表")
-
元组 (
tuple
): 有序的,不可变的数据集合。f = (1, 2, 3) if isinstance(f, tuple):print("f 是元组")
-
字典 (
dict
): 字典,键值对的集合,可变。常用于点对点修改。g = {'key': 'value'} if isinstance(g, dict):print("g 是字典")
-
集合 (
set
): 无序的、唯一元素集。h = {1, 2, 3} if isinstance(h, set):print("h 是集合")
-
NoneType: 表示无值的特殊类型,其值是
None
。
注意:空值的判断不能用isinstance来判断,否则会有下面的问题:
TypeError: isinstance() arg 2 must be a type or tuple of types
所以要用下面的判断方式:
i = None
if i is None:print("i 为空")
- 字节序列:
bytes
和bytearray
bytes和bytearray也可以用isinstance()
来做判断
data = b"Hello, World!"
if isinstance(data, bytes):print("data is a bytes")
bytearray:
ba = bytearray([71, 101, 108, 108, 111])
if isinstance(ba , bytearray):print("ba 是字节序列")
具体关于bytes
和bytearray
的详细说明,可以参考:
【Python】bytes 和 bytearray 到底是什么类型呢?
- 自定义类类型: 可以通过自己定义类,来创建新的数据类型。
我们也可以用isinstance()
函数,去判断某个对象是不是属于自己写的类里面,如果属于则可以进入下一步,这样方便做类的管理。class MyClass:passobj = MyClass() if isinstance(obj, MyClass):print("obj is an instance of MyClass")
通常,isinstance()
函数是进行类型判断的首选方法,因为它支持继承,可以检查一个对象是否是某个类的实例或其子类的实例。而 type()
函数则用于获取对象的确切类型,不考虑继承关系。