Python如何判断一个数是不是整数?答案没那么简单

liftword4个月前 (02-14)技术文章36

在Python里,如果我们想判断一个数是不是整数,应该如何操作呢?

使用type方法

很多人首先想到的是使用type方法,例如:

x = 0
type(x) == int

这个方法看上去很简单,但在Python里并不是一个优雅的做法,因为他破坏了Python的多态特性。设想我们基于int构造了一个子类,那么对于这个子类的对象,用type来判断就不对了:

class Spam(int): pass
x = Spam(0)
type(x) == int # False

Pyhon是一门鸭子语言。也就是说,只要一个东西长得像鸭子,那么就能用鸭子的方法来处理他,而使用type方法,就丧失了这种灵活性。

使用isinstance方法

为了保持这种灵活性,我们应该使用isinstance方法来进行判断一个变量是否是int的实例,这样就避免了上述遇到的问题:

class Spam(int): pass
x = Spam(0)
isinstance(x, int) # True

真的需要判断一个数的类型吗?

其实,上述方法还是不够Pythonic。完全没必要来判断一个数是否是整数,我们可以预设一个变量是整数来使用它,使用过程中如果出错了,就用异常来捕获,这样的代码易读性更高,也更Pyhonic。

try:
    x += 1
except TypeError:
    ...

敬请关注作者,每天学一点编程小知识

相关文章

在 Python 中将浮点数转换为整数方法指南

在 Python 中将浮点数转换为整数可能看起来很简单,但有一些重要的细微差别需要理解。让我们探讨所有可用的方法、它们的差异以及何时使用每种方法。基本浮点到整数转换方法Python 提供了多种将浮点数...

在 Python 中如何将字符串转换为整数

类似于内置的 str() 方法,Python 语言中有一个很好用的 int() 方法,可以将字符串对象作为参数,并返回一个整数。用法示例:# Here age is a string object a...

Python初学者练习:计算一个整数的各位数字之和

在这篇文章中,我们将编写一个程序来计算一个整数中各位数字的之和。示例:123:1+2+3=6方法1:使用while循环和整除运算符“//”、取余运算符“%”来计算这个python程序使用while循环...

编写程序随机产生30个1-100之间的随机整数,按5行6列的格式输出

大家好,我是皮皮。一、前言前几天在某乎上看到了一个粉丝提问,编写程序,随机产生30个1-100之间的随机整数并存入5行6列的二维列表中,按5行6列的格式输出?这里拿出来跟大家一起分享下。二、实现过程后...

「Python条件结构」if…else实现判断整数是否能不3和5整除

功能要求编写一个控制台应用程序,输入一个整数,判断它是否能同时被3和5整除,如能被整除则打印该数,显示“此数不能同时被3和5整除!”。实例代码num = int(input("请输入一个整数:"))i...

编程脑洞:如何用一个整数来表示一个列表?

原题 | Storing a list in an int (https://iantayler.com/2020/12/07/storing-a-list-in-an-int)作者 | Comput...