pythonを使っていて、以下のようなコードを書いてはまってしまいました。
#!/usr/bin/python
l,r = "x,yy".split(",")
print l == 'x'
print l is 'x'
print r == 'yy'
print r is 'yy'
この結果は次のようになり、'is'の挙動は文字1つの場合と複数ある場合とで異なります。
$ python is_equal.py True True True False
たぶん効率化を図るコードが、1文字の文字列オブジェクトを作る時にキャッシュからコピーして返すと思うのですが、まだpythonの実装を確認していません。
'=='と'is'比較演算子は動きが違って正解なのですが、簡単なコードで検証して動いたものを本番データでテストして発覚しました。
まぁ'is'周りがおかしい事はすぐにつき止められたし、'is'を使うのは間違いだとは思いますが、今回はまりまってしまいました。
0 件のコメント:
コメントを投稿