python中的type()和isinstance()

type()和instance()

python核心编程第二版,书中第四章关于type()和isinstance()的介绍非常有趣,摘录如下。
一个关于判断对象为那种number类型的函数:

def jundgle(num):
    print(num, end='')
    if type(num) == type(0):
        print('is an integer')
    if type(num) == type(0.0):
        print('is a float')
    if type(num) == type(0+0j):
        print('is a complex number') 

在这段代码中每一个if语句中都调用了两次type()函数,如果能减少调用type()函数的次数那么程序的性能可以提升。如何减少type()函数的次数呢?可以直接使用type对象而不是用type()函数每次都计算出自己给出的数字比如type(0)和type(0.0)…额有点小尴尬,这段代码并不能在python3上运行python3types的官方文档并没有出现types.IntType等。

import types
def jundgle(num):
    if type(num) == types.IntType:
        print('is an integer')
    if type(num) == types.FloatType:
        print('is a float')
    if type(num) == types.ComplexType:
        print('is a complex number')

在这里虽然说减少了type()函数的调用但是if语句也是很多的能不能只用一条if语句就能完成判断呢?这时候就需要isinstanc()函数了。

def jundgle(num):
    print(num, end='')
    if isinstance(num, (int, float, complex)):
        print('is a number of type:', type(num).__name__)
    else:
        print('not a number at all.')

是不是更简单一点了?这篇博客只是写着玩而已,思路啥的基本上都是书上的,只是看书看的没意思就敲了出来。希望下午四点的LPL和LMS的比赛,LPL赛出自己的风格。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值