【发布时间】:2011-01-12 04:47:58
【问题描述】:
在 python 中,测试变量是否包含列表或元组的最佳方法是什么? (即一个集合)
isinstance() 是否像这里建议的那样邪恶? http://www.canonical.org/~kragen/isinstance/
更新:我想将列表与字符串区分开来的最常见原因是当我有一些无限深的嵌套树/字符串列表列表的数据结构等时,我正在使用递归算法进行探索我需要知道我什么时候点击了“叶子”节点。
【问题讨论】:
-
广泛地将类型检查视为邪恶是有点轻率的。这是语言的一部分。如果它如此邪恶,应该有人写一个 PEP 来删除它。
-
@Adam Crossland:“这是语言的一部分。”就像除以零一样。这是可以避免的。在这种情况下,如果没有额外的信息,它可能完全没有必要。 Python 中的大多数类型检查都是不必要的。由于不是 all 是不必要的,因此需要进行一些类型检查。但这并不意味着它有用、有价值,甚至是个好主意。
-
所以你说需要进行一些类型检查,但尽管如此,它是无用的、毫无价值的,而且是个坏主意。抱歉,这没有任何意义。
-
“XXX 是邪恶的”是错误的,误导性的简写为“你要求做 XXX 的方式表明你不明白什么时候应该实际使用它,而且你几乎肯定想要别的东西”。这很可能是这种情况。
-
我并没有大体上认为它是邪恶的。我写了一篇关于什么时候是邪恶的,什么时候是正当的短文。那篇文章可能有很多东西——正确的、错误的、清晰的、模糊的、令人愉快的、无聊的——但它不是一件事就是对技术的广泛忽视。