マニュアル碌に読まんとやってたらこんなところでつまづいた。
【入力】
if 1 & 2:
print '&:OK!'
else:
print '&:NG!'
if 1 and 2:
print 'and:OK!'
else:
print 'and:NG!'
【出力】
&:NG!
and:OK!
どうやらPythonでは、'&'はビット論理積、'and'はブール論理積を表すらしい。
ビット論理積は、2進数の各桁についてブール論理積で評価する感じ。
この調子じゃ、ちゃんとリファレンスをチェックしとかないとまた別のとこで引っかかりそうだなw
cf.http://www.python.jp/doc/2.5/ref/summary.html