python学习之——判断数据类型 isinstance

 1 #判断变量类型的函数
 2 def typeof(variate):
 3     type=None
       if isinstance(variate,numpy.ndarray):
 5         type = "numpy.ndarray"
 4     if isinstance(variate,int):
 5         type = "int"
 6     elif isinstance(variate,str):
 7         type = "str"
 8     elif isinstance(variate,float):
 9         type = "float"
10     elif isinstance(variate,list):
11         type = "list"
12     elif isinstance(variate,tuple):
13         type = "tuple"
14     elif isinstance(variate,dict):
15         type = "dict"
16     elif isinstance(variate,set):
17         type = "set"
18     return type
19 # 返回变量类型
20 def getType(variate):
21     arr = {"int":"整数","float":"浮点","str":"字符串","list":"列表","tuple":"元组","dict":"字典","set":"集合"}
22     vartype = typeof(variate)
23     if not (vartype in arr):
24         return "未知类型"
25     return arr[vartype]


 

### Python 中 `if` 语句用于对象类型条件判断Python 中,可以利用内置函数 `isinstance()` 或者 `type()` 函数来进行对象类型的条件判断。这允许编写更健壮和可读性强的代码。 对于简单的类型检查,可以直接比较对象所属的数据类型: ```python obj = "hello" if type(obj) is str: print("这是一个字符串") ``` 然而推荐的做法是使用 `isinstance()` 函数,因为这种方法不仅支持基本数据类型的检测还能够处理继承关系中的子类实例验证[^1]。 #### 使用 isinstance() 进行类型检查 当需要确认某个变量是否属于特定类别时,比如列表、字典或者其他自定义类,则应该优先考虑采用 `isinstance()` 方式实现逻辑分支控制: ```python def process_item(item): if isinstance(item, (list, tuple)): # 处理序列化容器的情况 pass elif isinstance(item, dict): # 针对映射结构的操作 pass else: raise TypeError(f"Unsupported item type {type(item)}") ``` 此方法的优势在于它会自动考虑到可能存在的多重继承情况,并且语法更加直观易懂[^2]。 另外值得注意的是,在某些情况下也可以借助于异常捕获机制间接完成类似的任务;不过这种方式通常只适用于非常特殊的应用场景下作为备选方案存在。 #### 利用 dir() 探索未知对象特性 如果面对一个完全不了解其内部构成的对象,可以通过调用 `dir()` 函数获取该实体所拥有的全部属性名称列表。尽管无法直接区分哪些成员代表方法而哪些又是字段,但可以根据约定俗成的名字模式做出合理猜测——一般而言带有括号结尾或者以双下划线包围起来的方法名往往指示着它们可能是可调用的行为接口[^3]。 例如下面这段演示了怎样遍历并筛选出疑似为方法的部分: ```python import inspect class ExampleClass: def __init__(self): self.value = 42 def do_something(self): return True example_instance = ExampleClass() methods_list = [ method_name for method_name in dir(example_instance) if callable(getattr(example_instance, method_name)) and not method_name.startswith('__') ] print(methods_list) # 输出 ['do_something'] ``` 上述例子中运用到了 `inspect` 模块下的辅助工具进一步增强了识别准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值