Python bite: 真偽判定
Submitted by fujiwara on 2007, September 4 - 12:07pm.
Tagged: python
Python でのプログラミングの際に、 実際に咬まれた、 あるいは咬まれそうになった経験を元に、 再び踏み込むことの無い様に蛇の巣の在り処を書いておこうと思います (Python ハッカーならきっと難無く回避しているのでしょうが…)。
Python では、 C/C++ と同様(最近は warning 扱いにされることも増えましたが…) に条件判定式として True/False の真偽値以外も指定でき、 0 や None が指定された際には偽値扱いされます。
> (True or 'false') True > (False or 'false') 'false' > (None or 'false') 'false' > (0 or 'false') 'false'
C/C++ 的に親しみやすい判定結果
ここまでは良いのですが、 「空文字列は偽値扱い」というのは C/C++ 的になじまない感じがします。
> ('' or 'false')
'false'
C/C++ 的になじまない判定結果
PHP 的あるいは Oracle 的と言ったらよいのでしょうか? Perl(5.x) も空文字は真値扱いですから、 スクリプト言語/型制約の強弱に由来するものではなさそうです (Ruby は別な意味で C/C++ っぽくない模様)。