>>> False in [0]
True
>>> type(False) == type(0)
False
私はこのつまずいた理由:私のユニットテストのためにPythonの "in"は型をチェックしていませんか?
が、私は私のタイプごとに有効と無効例の値のリストを作成しました。 (「私の型」とは、つまり、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
を:今ではうまく機能しません 。
これは本当に私のvalid_valuesを反復して型を比較しなければならないのでしょうか?
+1私はPythonの 'in'は型をチェックしませんが、決して私は決してありません。とても興味深い 。 。 。 – OnesimusUnbound
@BenJames、うーん、私はそれがどのようにPythonでダックタイピングを壊すだろうか? – OnesimusUnbound