首页 > 解决方案 > isinstance() 使用的奇数类型语法

问题描述

我最近的任务是将一堆现有的 python 2.7 脚本迁移到 python 3.x,并注意到其中一个脚本中的一个我不太理解的语句:

if isinstance(some_variable, (list,)):
   # ...

起初我认为(,)语法可能是表达部分类型元组的一种方式,但情况似乎并非如此:

>>> isinstance(([],123), (list,))
False

查看调用代码,我发现唯一作为some_variable列表传递的参数值,所以我测试了:

>>> isinstance([], (list,))
True

那么你为什么要使用(list,)而不是仅仅list使用 withisinstance()呢?

怀疑可能还有其他(类似列表的?)类型的调用isinstance()会返回True,但我没有必要的 python 经验来思考它是什么:)

标签: python

解决方案


isinstance可以获取类型或类型元组作为第二个参数。

(list,)是一个只有 1 个条目的元组。如果您只有一种类型可以与您进行比较,则不必使用tuple


推荐阅读