長い間私を混乱させてきた三項条件演算子についてのちょっとした質問です。
コード例 (python 2.7):
>>> x, y = None, 3
>>> x, y
(None, 3)
>>> (x == None and x or y)
3
>>> (x != None and x or y)
3
>>> (x if x == None else y)
3 行目と 4 行目は古いスタイルの条件演算子です。どちらも同じ結果になります。そして明らかに、前者は「間違った」結果を取ります。多分それはpythonによれば間違っていません。しかし、プログラムで間違いを犯すのは非常に簡単で、明示的なエラーはありません。
5 行目は、本「Core python Programming」(Wesley J. Chun) によると、バージョン 2.5 からの新しいスタイルであり、その戻りは正しいです。
誰かがこれについて何か知っていますか?