在我发现代码中的错误之前,我有点困惑。我不得不改变
a.matched_images.count #True when variable is 0
到
a.matched_images.count > 0 #False when variable is 0
由于我很快想知道某个对象是否有任何图像,因此第一个代码会显示为照片有图像,因为当含义真的为假时,表达式的评估结果为True
("没有图像&# 34; / 0图像)
我是否正确理解了这一点,如果这些表达式应该评估为不同的值,请您回答或评论。
答案 0 :(得分:3)
count
的性质是什么?如果它是基本的Python编号,则if count
与if count != 0
相同。另一方面,如果count
是自定义类,那么它需要为Python 2.x或__nonzero__
或__len__
实现__bool__
或__len__
对于Python 3.x.如果未定义这些方法,则该类的每个实例都被视为True
。
答案 1 :(得分:2)
不知道count
是什么,很难回答,但this excerpt可能对您有用:。
以下值被视为false:
无
假
任何数字类型的零,例如0,0L,0.0,0j。
任何空序列,例如'',(),[]。
任何空映射,例如{}。
用户定义类的实例,如果类定义了 {1}}或
__nonzero__()
方法,当该方法返回时 整数零或bool值为False。 [1]所有其他值都被认为是真的 - 所以很多类型的对象都是 永远都是。
答案 2 :(得分:1)
>>> bool(0)
False
所以..不,如果它是一个无关紧要的int。请进行一些跟踪,打印出count
实际上是什么。