博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python2 type()函数 isinstance()函数
阅读量:4171 次
发布时间:2019-05-26

本文共 2022 字,大约阅读时间需要 6 分钟。

本文,我们结合python2代码,学习type()函数 isinstance()函数.

1》type()函数

通过type()函数,可以得到一个对象的类型,请看以下示例:
>>> a=8
>>> type(a)
<type 'int'>

>>> a1=67l

>>> type(a1)

<type 'long'>
>>> a2=67L
>>> type(a2)
<type 'long'>
>>> b=9.7
>>> type(b)
<type 'float'>
>>> s='love'
>>> type(s)
<type 'str'>
>>> l=[2,3,4]
>>> type(l)
<type 'list'>
>>> t=(4,5,6)
>>> type(t)
<type 'tuple'>
>>> d={'j':1,'k':2}
>>> type(d)
<type 'dict'>

2》isinstance()函数

isinstance()函数说明如下:
>>> help(isinstance)
Help on built-in function isinstance in module __builtin__:

isinstance(...)

    isinstance(object, class-or-type-or-tuple) -> bool
    
    Return whether an object is an instance of a class or of a subclass thereof.
    With a type as second argument, return whether that is the object's type.
    The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for
    isinstance(x, A) or isinstance(x, B) or ... (etc.).

第一个参数是:对象(python中一切皆对象)

第二个参数是:自定义的类类型python标准数据类型(int,long,float,list,tuple,dict,str,bool,complex) 或 由二者构成的元组
总结,参数一是对象,参数二是must be a class, type, or tuple of classes and types

2.1>第二个参数是自定义的类类型,对象的类型与参数二的类型相同或对象的类型是参数二的子类就返回True

class A:
    pass
class B:
    pass
class C(A):
    pass
obj=C()

>>> isinstance(obj,C) #对象obj的类型是C,与参数二一致,返回True

True
>>> isinstance(obj,B)#对象obj的类型是C,与参数二不一致,且C不是B的子类,返回 False
False
>>> isinstance(obj,A)#对象obj的类型是C,与参数二不一致,但C是A的子类,返回True
True

2.2》第二个参数是python标准数据类型,对象的类型与参数二的类型相同则返回True。
>>> isinstance(2,int)

True

>>> isinstance(3L,long)

True
>>> isinstance(3l,long)
True

>>> isinstance(8.9,float)

True
>>> isinstance(True,bool)
True
>>> isinstance('love',str)
True
>>> isinstance(2+3j,complex)
True
>>> isinstance((2,3,4),tuple)
True
>>> isinstance([3,4,5],list)
True
>>> isinstance({'a':1,'b':2},dict)
True
2.3》第三个参数是二者构成的元组,对象的类型在元组中或对象类型的父类在元组中,就返回True。
class A:
    pass
class B:
    pass
class C(A):
    pass
obj=C()

>>> isinstance(obj,(int,str,C,B))#对象obj的类型是C,第二个参数中包含C,因此返回True

True
>>> isinstance(obj,(int,str,A,B))#对象obj的类型是C,C的父类(超类)是A,第二个参数中包含A,因此返回 True
True
>>> isinstance(obj,(int,str,B))#对象obj的类型是C,C的父类是A,C与A均不在参数二中,因此返回False
False

(完)

转载地址:http://kbyai.baihongyu.com/

你可能感兴趣的文章
将中文转为unicode 及转回中文函数
查看>>
《程序员》专访金蝶:是谁不相信国产软件?
查看>>
debian的gnome下的xmms乱码解决方案
查看>>
python切片操作
查看>>
python 中的split()函数和os.path.split()函数
查看>>
python 矩阵转置
查看>>
python 使用zip合并相邻的列表项
查看>>
python iter( )函数
查看>>
Python 迭代器(iterator)
查看>>
Python enumerate类
查看>>
leetcode 99 Recover Binary Search Tree (python)
查看>>
linux echo 向文件中追加信息
查看>>
区块链问与答
查看>>
css常用小知识点
查看>>
js常用小知识点
查看>>
Java常用小知识点
查看>>
Java小知识点之lambda
查看>>
开源Java诊断工具Arthas简单使用说明
查看>>
深入理解Mysql索引底层数据结构与算法(二)
查看>>
IDEA自动去掉无用的import
查看>>