Python内部是如何判断一个对象是True还是False

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python内部是如何判断一个对象是True还是False相关的知识,希望对你有一定的参考价值。

参考技术A 作者:gao xinge
链接:https://www.zhihu.com/question/53708403/answer/139331035
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

内建函数boolpython中的所有对象都可以用内建函数bool来判断布尔值是True还是False,如下>>> bool(1)
True
>>> bool(0)
False
>>> bool(True)
True
>>> bool(False)
False
>>> def f(a):
return a
>>> bool(f)
True
>>> bool(__builtins__)
True
>>> import collections
>>> bool(collections)
True
__nonzero__函数和__len__函数内建函数bool的逻辑顺序: 如果对象没有实现__nonzero__函数或者__len__函数,返回True; 如果对象实现了__nonzero__函数,根据__nonzero__函数的返回值判断; 如果对象没有实现__nonzero__函数,但实现了__len__函数,根据__len__函数的返回值判断如下>>> # example one
>>> class f:
def __init__(self, a, b):
self.a = a
self.b = b

>>> t = f(0,1)
>>> bool(t)
True

>>> # example two
>>> class f:
def __init__(self, a, b):
self.a = a
self.b = b
def __nonzero__(self):
return self.a
def __len__(self):
return self.b

>>> t = f(0,1)
>>> bool(t)
False

>>> # example three
>>> class f:
def __init__(self, a, b):
self.a = a
self.b = b
def __len__(self):
return self.b

>>> t = f(1,0)
>>> bool(t)
False

python 判断一个对象的变量类型

isinstance
 
语法:
isinstance(object, classinfo)
如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。
 
例子:
>>> isinstance(1, int)
True
>>> isinstance(1.0, float)
True
>>>isinstance(1,(int,float))
True
>>> class Myclass:
pass
>>> test = Myclass()
>>> isinstance(test, Myclass)
True

  

以上是关于Python内部是如何判断一个对象是True还是False的主要内容,如果未能解决你的问题,请参考以下文章

js中如何判断属性是对象实例中的属性还是原型中的属性

python - isinstance/issubclass 函数

python判断一个对象是否可迭代

python如何判断类型

如何判断一个对象是不是是数组

python如何判断输入是字符串还是数字