如果和声明等于True,但应该是False

时间:2013-04-22 10:46:47

标签: python django

所以我有以下代码:

if old_size < new_size and date_exceeded and usage(user) < new_size:
    unset_date_exceeded()

问题是,即使值不同,这也是评估为True:

logger.info('oS:%s | nS:%s | dE:%s | usage:%s' % (old_size, new_size, date_exceeded, usage(user)))
# returns oS:262144000 | nS:536870912 | dE:2013-04-22 10:27:08+00:00 | usage:908811325

注意用法(用户)&lt; new_size应该是False,但由于某种原因,它不是那样的。

我想也许我不明白and如何运作,但是如果我在python shell中尝试这个,我就无法复制它而是得到预期的结果:

>>> oS=         262144000
>>> nS=         536870912
>>> usage=       908811325
>>> dE="2013-04-22 10:27:08+00:00"
>>> oS < nS and dE and usage < nS
False

我很确定我正在失去理智并错过了一个错字或其他东西,所以如果是这样的话我会道歉,但我很难过。

1 个答案:

答案 0 :(得分:1)

我怀疑你是在尝试比较不同的类型(这是允许的 - 但意义有点无意义)......

如果您尝试:

print map(type, (old_size, new_size, date_exceeded, usage(user)))

然后从那里开始......