首页
学习
活动
专区
工具
TVP
发布

python isinstance、is

今天写一个校验的时候,遇到了三个函数,记下来以备用吧     isinstance、isalnum、len 相比大家都知道type()函数,判断一个对象的数据类型: In [1]: test = "abc123..." In [2]: type(test) Out[2]: str In [3]: test = 123 In [4]: type(test) Out[4]: int 接下来介绍 isinstance...数据类型,该函数用来判断是否为已知的数据类型,而type函数则是判断未知的数据类型,还是撸代码吧: In [5]: test = "abc123" In [6]: isinstance(test,int...) Out[6]: False In [7]: isinstance(test,(int,list)) Out[7]: False 基本语法就是   isinstance(对象,数据类型/(多个数据类型...)) 如果对象的数据类型包含在后面的数据类型中,则返回True,否则为False In [8]: isinstance(test,(int,list,str)) Out[8]: True In [9

51410
您找到你想要的搜索结果了吗?
是的
没有找到

深度剖析isinstance的检查机制

打破砂锅问到底的原则我从源码中观察 isinstance 的检测过程。 从源码来看 isinstance 的检测过程 这部分的内容可能比较难,如果读者觉得阅读有难度可以跳过,直接看结论。...isinstance 的源码在 abstract.c 文件中: [abstract.c] int PyObject_IsInstance(PyObject *inst, PyObject *cls) {...PyObject_IsInstance(inst, item) 。...检查机制总结 至此,isinstance 的检测过程基本清晰了,为了便于理解,也得益于python很强的自解释能力,我用python代码来简化 isinstance 的过程: def _isinstance...重载 isinstance(x, C) 因此,要想重载 isinstance(x, C) ,让用户能自定义判断结果,就需要满足以下条件: x 对象不能是由 C 直接实例化; C 类指定 metaclass

44510

python教程:isinstance和issubclass的用法

一、isinstance与type 在游戏项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。 这样做不但便于调试,而且增加健壮性。...非常好用,比如 print(type('foo') == str) True print(type(2.3) in (int, float)) True 既然有了type()来判断类型,为什么还有isinstance...type()不会认为子类是一种父类类型;isinstance()会认为子类是一种父类类型。千言不如一码。...pass class Bar(Foo): pass print(type(Foo()) == Foo) True print(type(Bar()) == Foo) False # isinstance...参数为对象和类 print(isinstance(Bar(),Foo)) True 需要注意的是,旧式类跟新式类的type()结果是不一样的。

19910
领券