>>> False in [0]
True
>>> type(False) == type(0)
False
Я наткнулся на это:
Для моего модульного тестирования я создал списки допустимых и недопустимых значений для каждого из моих типов. (с "моими типами" я имею в виду, что они не на 100% равны типам python) Поэтому я хочу перебрать список всех значений и ожидать, что они пройдут, если они будут в моих действительных значениях, а с другой стороны, потерпят неудачу, если они не являются. Теперь это не так хорошо:
>>> valid_values = [-1, 0, 1, 2, 3]
>>> invalid_values = [True, False, "foo"]
>>> for value in valid_values + invalid_values:
... if value in valid_values:
... print 'valid value:', value
...
valid value: -1
valid value: 0
valid value: 1
valid value: 2
valid value: 3
valid value: True
valid value: False
Конечно, я не согласен с двумя последними действительными значениями.
Означает ли это, что мне действительно нужно перебирать мои действительные_значения и сравнивать тип?