Поэтому у меня есть следующий код:Если и утверждение приравнивания Верно, но должно быть Ложные
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
Я довольно уверен, Я схожу с ума и пропуская опечатку или что-то в этом роде, поэтому извиняюсь, если это так, но я в тупик.
Возможно ли, что 'usage' не всегда возвращает одно и то же значение? Возможно, вызовите его один раз и используйте это значение в ведении журнала и инструкции if, вместо того, чтобы называть его дважды. – GP89
Ваш оператор 'if' в порядке, значения не должны быть такими, какими вы думаете. – interjay
Это очень маловероятно, так как это идемпотент, но так как я нахожусь в конце моего троса, я дам ему вихрь: D – DanH