2013-04-22 2 views
1

Поэтому у меня есть следующий код:Если и утверждение приравнивания Верно, но должно быть Ложные

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

Проблема это оценивает Истина, даже когда значения свидетельствуют об обратном:

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

Возможно ли, что 'usage' не всегда возвращает одно и то же значение? Возможно, вызовите его один раз и используйте это значение в ведении журнала и инструкции if, вместо того, чтобы называть его дважды. – GP89

+0

Ваш оператор 'if' в порядке, значения не должны быть такими, какими вы думаете. – interjay

+0

Это очень маловероятно, так как это идемпотент, но так как я нахожусь в конце моего троса, я дам ему вихрь: D – DanH

ответ

1

Я подозреваю, что вы пытаетесь сравнить различные типы (которые разрешены - но смысл несколько бессмысленно) ...

Если попробовать:

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

И затем оттуда. ..

Смежные вопросы