检查变量是否为整数

1136

如何检查一个变量是否为整数?


3
你好,@Hulk的话似乎让你认为type是解决这个问题的正确方式,但这(几乎肯定)不是正确的方式。 - Katriel
2
@ Hulk:没有冒犯之意。但需要明确的是,我所知道的唯一捕获异常的方法是使用 except 子句。我建议你捕获 TypeError 异常。 - Jungle Hunter
17
这个问题存在歧义,因此答案也被分成了不同的部分。一些人回答如何检查变量的类型(例如,5→True,5.0→False),而另一些人回答如何检查值是否为整数(例如,5→True,5.0→True,Fraction(5,1)→True,5.4→False)。也许应该相应地将问题和答案拆分开来? - endolith
1
最简单的方法(适用于Python 2.7.11)是int(var)== var。适用于.0浮点数,返回布尔值。 - oisinvg
2
你是指“如何确定变量的类型是整数?”还是“如何确定变量的值是整数?” - Benice
显示剩余7条评论
41个回答

-7

永远不要忽略类型检查。

始终如一地执行此操作。

try:
    some operation that "requires" an integer
except TypeError, e:
    it wasn't an integer, fail.

5
有时候需要检查对象的类型(正如你在上面的评论中所承认的)。虽然通常是错误的做法,但实际中确实有用例,并且语言提供了相关功能。我认为说“永远不要做某事”并不是有益或正确的。 - Scott Griffiths
4
“就效率而言”很可能是不正确的说法,请仔细衡量。除外条款非常有效率。 - S.Lott
5
效率的论述不仅适用于单个语句。我同意try/except非常高效,而isinstance()则非常慢(我进行过相当多的分析)。有时,为了区分例如字符串和其他类型的可迭代对象,您可能需要走一段路才能引发异常(如果根本引发异常!)。因此,失去的时间是在尝试子句中走到一半,然后才能退出。这也可能是一个相当脆弱的安排,并且您冒着稍后更改可能导致异常不被引发的风险。 - Scott Griffiths
3
如果代码在处理非整数时仍然能够运行(但结果不正确),我该如何避免这种情况发生? - endolith
1
你驳回了@ScottGriffiths的反例,如果是有效的话,它将证明你的“从不”是错误的,并说:“那是唯一的反例。这就是为什么我说‘从不’”。真的吗?你意识到你在引诱人们浪费他们的时间吗? - Don Hatch
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接