演算子の強さ
通常、「%」を剰余演算子として考えている場合、この演算子と「*」 (乗算演算子)の結合の強さが同じだということは、よーく理解している。(と思う)
しかし、盲点があったのだ。以下の式を見て欲しい。Python では、「%」を文字列の置換演算子として用いる(後述)。
print "This is a '%s.'" % "pen" * 0
あまり面白くない例で恐縮だが、これを実行すると、改行しか表示されなくて悩んでしまった。実は、% と * は演算子の結合度が同じレベルで、かつ左結合なので
print ("This is a '%s.'" % "pen") * 0
と同じなのだー。つまり本当は、次のようにしなくてはならなかったということだ。
print "This is a '%s.'" % ("pen" * 0)
つまらない例題で、どうもすみません。