text: 以下に、階乗 (関数名: factorial)を題材にC言語と比較した例を示す。Pythonのコード: def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) わかりやすく整形されたC言語のコード: int factorial(int x) { if (x == 0) { return 1; } else { return x * factorial(x - 1); } } この例では、Pythonと整形されたC言語とでは、プログラムコードの間に違いがほとんど見られない。しかし、C言語のインデントは構文規則上のルールではなく、単なる読みやすさを向上させるコーディングスタイルでしかない。そのためC言語では全く同じプログラムを以下のように書くこともできる。わかりにくいC: int factorial(int x) { if(x == 0) {return 1;} else {return x * factorial(x - 1); } } Pythonではインデントは構文規則として決められているため、こうした書き方は不可能である。Pythonではこのように強制することによって、ソースコードのスタイルがその書き手にかかわらずほぼ統一したものになり、その結果読みやすくなるという考え方が取り入れられている。これについては賛否両論があり、批判的立場の人々からは、これはプログラマがスタイルを選ぶ自由を制限するものだ、という意見も出されている。インデントによる整形は、単に「見かけ」だけではなく品質そのものにも関係する。例として次のコードを示す。間違えたC: if (x > 10) x = 10; y = 0; このコードはC言語の構文規則上は問題無いが、インデントによる見かけのifの範囲と、言語仕様によるifの実際の範囲とが異なっているため、プログラマの意図が曖昧になる。(前者は"y = 0;"がif文に包含され、後者は"{}"がないため"y = 0;"がif文に包含されない)この曖昧さは、検知しにくいバグを生む原因になる。例としてはApple goto failが挙げられる。ソースコードを読む際、多くの人はインデントのような空白を元に整列されたコードを読み、コンパイラのように構文解析しながらソースを読むものではない。その結果、一見しただけでは原因を見つけられないバグを作成する危険がある。Pythonではインデントをルールとすることにより、人間が目視するソースコードの理解とコンパイラの構文解析の間の差を少なくすることで、より正確に意図した通りにコーディングすることができると主張されている。型システム  Pythonは動的型付けシステムをもつ。