Python における演算子の優先順位

PythonBeginner
オンラインで実践に進む

はじめに

この実験(Lab)では、Python における演算子の優先順位について実践的な理解を得ます。数学と同様に、Python も式内の演算が実行される順序を決定するための特定の規則に従います。これらの規則をしっかりと把握することは、正しく予測可能なコードを書くために不可欠です。

まず、基本的な算術演算子の優先順位を探ります。次に、べき乗や比較などのより高度な演算子がその階層にどのように適合するかを見ていきます。最後に、デフォルトの演算順序を上書きするために括弧を使用する方法を学びます。これは、計算を制御し、コードの可読性を向上させるために極めて重要なテクニックです。

基本的な算術演算の優先順位

Python では、標準的な数学と同様に、一部の算術演算子は他の演算子よりも高い優先順位を持ちます。具体的には、乗算(*)と除算(/)は、加算(+)と減算(-)よりも先に行われます。同じ優先順位の演算子がある場合、それらは左から右へ評価されます。

この動作を観察してみましょう。セットアッププロセスにより、すでにファイルが作成されています。左側の WebIDE ファイルエクスプローラーで、~/projectディレクトリにあるoperator_precedence.pyという名前のファイルを見つけて開いてください。

ファイルに次のコードを追加します。

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

この式には、加算、乗算、減算、除算が含まれています。演算の順序を予測してみましょう。

  1. Python はまず乗算を実行します:4 * 312 になります。
  2. 次に、除算を実行します:10 / 52.0 になります。Python 3 の標準除算では、結果は常に浮動小数点数になることに注意してください。
  3. 式は現在 10 + 12 - 2.0 となります。
  4. 最後に、加算と減算を左から右へ実行します:10 + 1222 であり、22 - 2.020.0 です。

Ctrl + Sを押してファイルを保存します。コードを実行するには、WebIDE でターミナルを開き(Terminal -> New Terminal)、次のコマンドを実行します。

python ~/project/operator_precedence.py

計算結果がターミナルに出力されるのが確認できます。

20.0

この出力は私たちの予測と一致しており、乗算と除算が加算と減算よりも優先されることが確認できました。

高レベル演算子の優先順位

Python の演算子の階層は、基本的な算術演算を超えて拡張されています。べき乗演算子(**)は、乗算や除算よりも高い優先順位を持ちます。さらに、すべての算術演算子は、「より大きい」(>)などの比較演算子よりも高い優先順位を持ちます。

この動作を確認するために、スクリプトにいくつかの新しい例を追加しましょう。~/project/operator_precedence.pyファイルを編集して、2 つの新しい式を含めてください。

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

## Exponentiation has higher precedence than multiplication.
exp_result = 2 * 3 ** 2
print(exp_result)

## Arithmetic operators have higher precedence than comparison operators.
comp_result = 18 > 5 + 10
print(comp_result)

新しい行を分析してみましょう。

  1. 2 * 3 ** 2 では、まずべき乗の 3 ** 2 が計算され、9 になります。次に、乗算 2 * 9 が実行され、18 になります。
  2. 18 > 5 + 10 では、まず加算 5 + 10 が計算され、15 になります。次に、比較 18 > 15 が評価され、True となります。

ファイルを保存し(Ctrl + S)、スクリプトを再度実行します。

python ~/project/operator_precedence.py

ターミナルには、3 つのすべての式の結果が表示されます。

20.0
18
True

これにより、Python はべき乗を最初に評価し、次に他の算術演算、最後に比較演算を評価することが確認できました。

括弧を使用した評価順序の制御

Python の優先順位のルールは一貫していますが、複雑な式は読みにくくなることがあります。デフォルトの順序を上書きするため、または単に意図を明確にするために、括弧 () を使用できます。括弧で囲まれた式は最初に評価されます。

括弧の影響を確認するために、以前の例の 1 つを変更しましょう。~/project/operator_precedence.pyの最後に新しい式を追加します。

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

## Exponentiation has higher precedence than multiplication.
exp_result = 2 * 3 ** 2
print(exp_result)

## Arithmetic operators have higher precedence than comparison operators.
comp_result = 18 > 5 + 10
print(comp_result)

## Using parentheses to change the order of evaluation.
forced_result = (10 + 4) * 3
print(forced_result)

新しい行 (10 + 4) * 3 を分析してみましょう。

  1. 10 + 4 が括弧内にあるため、最初に評価され、14 になります。
  2. 次に、乗算 14 * 3 が実行され、42 になります。

これは、22 に評価されることがわかっている 10 + 4 * 3 とは異なります。括弧は結果を完全に変更しました。

ファイルを保存し、最後にスクリプトを実行します。

python ~/project/operator_precedence.py

出力には、括弧で囲まれた式の結果が含まれるようになります。

20.0
18
True
42

厳密には必要ない場合でも、括弧を使用することは良い習慣です。これにより演算の順序が明示的になり、コードの可読性が向上し、優先順位の誤解によるバグの発生を防ぐことができます。

まとめ

この実験(Lab)では、Python における演算子の優先順位という基本的な概念を探求しました。基本的な算術演算から始め、乗算と除算が加算と減算よりも優先されることを確認しました。次に、べき乗や比較などの他の演算子が階層内のどこに位置するかを学びました。

最も重要なのは、括弧を使用して評価の順序を明示的に制御する方法を練習したことです。このスキルは、機能的に正しいだけでなく、他者にとっても明確で理解しやすいコードを書くために不可欠です。演算子の優先順位を習得することで、より堅牢で信頼性の高い Python プログラムを作成するための重要な一歩を踏み出しました。