Python はインデンテーションが肝心だ。行頭のタブがなくなるとコードが壊れる。
ところで、Web の BBS には、行頭のインデンテーションを全部取り除いてしまうものがある。 こういう BBS は Python のコードを載せるのに非常に都合が悪い。
全角スペースで逃げるという手もあるけど、そのままコピペできないので面倒。というか、コードに全角スペースはできる限り入れない方がいい。ろくでもない結果を産むことが目に見えている。
BBS の実装でなんとかするという手もあるけど、 Python 側でこう対応すればいいんじゃね、というのを考えてみた。
def factorial(x): ___ if x == 0: _______ return 1 ___ else: _______ return x * factorial(x - 1)
みたいな感じで。n 個のタブを、行頭から連続する「3 + 4 * (n – 1)」個のアンダースコア、1個のスペースと可換にする。