【python】【转】python中isinstance判断变量类型用法

本文介绍了一种简单的Python类型检查方法,通过使用内置函数isinstance来验证变量是否为预期的数据类型。

来源 http://www.jb51.net/article/15696.htm

 

在Python中只需要使用内置的函数isinstance,使用起来非常简单,比如下面的例子:

复制代码 代码如下:

class objA:
pass

A = objA()
B = 'a','v'
C = 'a string'

print isinstance(A, objA)
print isinstance(B, tuple)
print isinstance(C, basestring)

输出结果:
True
True
True 

转载于:https://www.cnblogs.com/GiraffaMPRO/p/6013212.html

<think>在Python中,使用isinstance()函数判断一个对象是否属于多种类型之一,可以通过将多个类型放入一个元组中作为第二个参数传入。 例如:isinstance(obj, (type1, type2, type3)),如果obj是type1、type2或type3中的任意一个类型,则返回True,否则返回False。 示例代码: 判断一个变量是否是整数、字符串或列表类型之一: if isinstance(var, (int, str, list)): print("属于整数、字符串或列表类型之一") 注意:第二个参数必须是一个元组(tuple),即使只有一个类型,也建议写成元组形式(如 (int,))以保持一致性。 另外,这种方法也支持继承关系。如果对象是给定类型中某一个类型的子类的实例,也会返回True。 示例: class MyInt(int): pass obj = MyInt(5) print(isinstance(obj, (int, str))) # 输出True,因为MyInt是int的子类 因此,使用元组作为第二个参数可以一次性检查多种类型。</think>在 Python 中,使用 `isinstance()` 一次性判断多种类型,只需将多个类型放入一个**元组**作为第二个参数即可。语法如下: ```python isinstance(object, (type1, type2, type3, ...)) ``` ### 具体用法 ```python value = 3.14 # 判断是否是 int 或 float 类型 if isinstance(value, (int, float)): print("数值类型") # 会执行 # 判断是否是 str 或 list 类型 if isinstance(value, (str, list)): print("字符串或列表") # 不会执行 ``` ### 实际应用示例 ```python def process_data(data): # 同时检查多种可迭代类型 if isinstance(data, (list, tuple, set)): print(f"处理序列数据,长度: {len(data)}") return sum(data) # 同时检查多种数值类型 elif isinstance(data, (int, float, complex)): print("处理数值数据") return data * 2 # 同时检查多种文本类型 elif isinstance(data, (str, bytes)): print("处理文本数据") return data.upper() else: raise TypeError("不支持的数据类型") # 测试 print(process_data([1, 2, 3])) # 输出: 处理序列数据,长度: 3 → 6 print(process_data(10)) # 输出: 处理数值数据 → 20 print(process_data("hello")) # 输出: 处理文本数据 → "HELLO" ``` ### 关键注意事项 1. **必须使用元组包裹类型**:`(type1, type2)` 形式 ```python # 正确 isinstance(x, (int, float)) # 错误(会判断是否是 tuple 类型本身) isinstance(x, int, float) ``` 2. **支持所有类型**:包括内置类型、自定义类、ABC 抽象基类 ```python from collections.abc import Sequence class MyClass: pass obj = MyClass() print(isinstance(obj, (MyClass, Sequence))) # True ``` 3. **继承关系有效**:子类实例也会返回 `True` ```python class MyInt(int): pass print(isinstance(MyInt(5), (int, str))) # True (int 的子类) ``` 4. **与 type() 的区别**: ```python value = True print(isinstance(value, int)) # True (bool 是 int 子类) print(type(value) is int) # False ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值