python笔记(1)

Python判断数据类型的时候遇到了问题

mixedlist1=[(5,'ddddd',6,False),['a',12,True],('c',9,10,''),'789abc',1,True]

如果bool判断在int判断前:

if isinstance(n, (bool)):
	listb.append(n)
elif isinstance(n,(int)):
	listi.append(n)

结果为:[5, 6, 12, 9, 10, 1] [False, True, True]
如果bool判断在int判断之后,结果就会出现:[5, 6,False, 12, True, 9, 10, 1] [True ]
原因是: 内建函数isinstance的原型int PyObject_IsInstance(PyObject *inst, PyObject *cls),此函数中会检查实例的父类的类型,而bool是int类型的子类(参见类型PyBool_Type与PyInt_Type),当然使用isinstance就无法准确判断bool与int型了。 大致理解为:因为bool是int的子类,所以在判断int的时候,如果为int,返回ture,如果为bool,因为是子类,所以也返回true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值