gpt4 book ai didi

Python isinstance 函数

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:03 24 4
gpt4 key购买 nike

我不明白为什么 isinstance 函数作为第二个参数需要一个元组而不是一些可迭代的?

isinstance(some_object, (some_class1, some_class2))

工作正常,但是

isinstance(some_object, [some_class1, some_class2])

抛出类型错误

最佳答案

原因似乎是“只允许元组就足够了,它更简单,它避免了一些极端情况的危险,而且它对 BDFL 来说似乎更整洁”(即 Guido)。 (感谢@Caleb 在评论中发布了关键链接。)

这是来自 this email conversation with Guido van Rossum 的摘录专门针对 isinstance 函数的其他可迭代对象的情况。 (点击链接查看完整对话。)

On Thu, Jan 2, 2014 at 1:37 PM, James Powell wrote:

This is driven by a real-world example wherein a large number of prefixes stored in a set, necessitating:

any('spam'.startswith(c) for c in prefixes)
# or
'spam'.startswith(tuple(prefixes))

这些都没有让我觉得糟糕。另外,要看是否设置 前缀本身动态变化,最好解除 tuple() 从 startswith() 调用中调用。

...

However, .startswith doesn't seem to be the only example of this, and the other examples are free of the string/iterable ambiguity:

isinstance(x, {int, float})

但这更不可能有一个动态生成的参数。

这里可能还有另一个歧义:元类可以 可以想象使其实例(即类)可迭代。

关于Python isinstance 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56001344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com