TypeError: isinstance() arg 2 必须是类型或类型的元组
Posted
技术标签:
【中文标题】TypeError: isinstance() arg 2 必须是类型或类型的元组【英文标题】:TypeError: isinstance() arg 2 must be a type or tuple of types 【发布时间】:2019-04-26 10:41:45 【问题描述】:如果你和我一样,你可能已经尝试过:
isinstance(my_var, [list, tuple])
只为得到:
TypeError: isinstance() arg 2 must be a type or tuple of types
现在我完全理解了这个问题(错误信息很清楚)以及如何解决它。 我也了解列表和元组(可变与不可变)之间的区别。
但是,我想了解的是,Python 解释器还允许将列表作为 isinstance arg 2 提供的权衡是什么? (反正代码已经需要检查参数是标量还是元组)
如果您像我一样,它会节省很多不得不来回迭代应用修复,所以我很好奇 Python 标准函数是否有性能或其他原因不混合这里接受列表和元组?
【问题讨论】:
类比和相关***.com/a/45118023/6260170 这读起来更像是一个咆哮而不是一个问题。此外,除了 python 核心团队之外,这不是真正可以回答的问题。所有语言都会做出有问题的决定。 @JaredSmith,对不起,不是要咆哮。只是想了解 Python 在这种情况下接受列表的利弊是什么?我已经澄清了我提出问题的动机。 这是一个合理的问题,但请阅读我上面链接的答案,这里真的没有任何理由接受列表。但是,与 str.startswith 情况不同,它没有参数表明您需要单个字符串的特殊情况 链接很有趣。肿瘤坏死因子。但是,我会争辩说,假设“所有事物都是平等的”成立(我不确定这里是否如此?),用户友好性也是一个重要的项目? 【参考方案1】:isinstance(my_var, (list, tuple))
有效!
请注意,2-ed arg 仅接受 tuple
而不是 list
。
【讨论】:
以上是关于TypeError: isinstance() arg 2 必须是类型或类型的元组的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: isinstance() arg 2 必须是类型或类型的元组
TypeError:类型别名不能与 isinstance() 一起使用
python Python:ClassName(list),isinstance(),TypeError,ValueError,.append()
Django Unittest无法使用TypeError运行:isinstance()arg 2必须是一台机器上的类型或元组,而不是其他机器上的类型或元组