5有时候需要检查对象的类型(正如你在上面的评论中所承认的)。虽然通常是错误的做法,但实际中确实有用例,并且语言提供了相关功能。我认为说“永远不要做某事”并不是有益或正确的。 - Scott Griffiths
4“就效率而言”很可能是不正确的说法,请仔细衡量。除外条款非常有效率。 - S.Lott
5效率的论述不仅适用于单个语句。我同意try/except非常高效,而isinstance()则非常慢(我进行过相当多的分析)。有时,为了区分例如字符串和其他类型的可迭代对象,您可能需要走一段路才能引发异常(如果根本引发异常!)。因此,失去的时间是在尝试子句中走到一半,然后才能退出。这也可能是一个相当脆弱的安排,并且您冒着稍后更改可能导致异常不被引发的风险。 - Scott Griffiths
type
是解决这个问题的正确方式,但这(几乎肯定)不是正确的方式。 - Katriel