2013-04-22 61 views
1

所以我有以下代碼:如果和聲明等同於真實的,但應該是假的

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 

請注意,使用(用戶)< new_size應該是False,但由於某種原因,它不是這樣工作的。

我想,也許我不知道如何and的功能,但如果我嘗試這在Python外殼,我不能複製它,而是得到預期的結果:

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

我相當肯定我失去了理智,錯過了一個錯字或其他的東西,所以如果是這樣的話,我很抱歉,但我很難過。

+2

是否有可能'用法'不總是返回相同的值?也許調用一次,並在日誌記錄和if語句中使用該值,而不是調用它兩次。 – GP89 2013-04-22 10:51:53

+0

你的'if'陳述很好,值不能是你想象的那樣。 – interjay 2013-04-22 10:55:19

+0

這是非常不可能的,因爲它是冪等的,但是因爲我在我的繫繩的末尾,我會給它一個旋轉:D – DanH 2013-04-22 10:55:47

回答

1

我懷疑你要比較不同類型的(這是合法的 - 但意思是有些無意義)...

如果你嘗試:

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

然後從那裏。 ..

相關問題