Pythonの代入演算子とは、ある値を変数に「代入」するために利用されるものです。
# 変数aに値を代入 a = 5 print(a) # 結果 ⇒ 5
参考 変数とは? / print関数の使い方
簡単に説明すると、「a = 5」の "=" のこと。
Pythonには様々な代入演算子があります。それぞれが特定の操作と値の代入を一度に行うことを特徴としています。このページでは代入演算子の基本から応用まで、3分でわかりやすくご説明します。
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
Python:代入演算子とは?
代入演算子とは、その名の通り値の代入を示す演算子です。
a = 5 # 変数aに値を代入 print(a) # 結果 ⇒ 5
代入演算子は、プログラミング言語で共通に見られる一種の演算子で、1つの値を変数に関連付ける(=代入する)、または既存の変数の値を新しい値で更新する場合に利用されます。Pythonでは一般的に =
演算子を使用して実行されます。
参考 プログラミング言語とは?
たとえば、x = 5
というコードは、「5をxという名前の変数に代入する」という操作を表しています。
初心者の方は慣れないかもしれませんが、代入演算子 "=" で結んだ場合、右から左に値を移動させるイメージです。ほとんどのプログラミング言語で同様の動きをするので、整理して学習しておきましょう。
# 変数aに値5を代入 a = 5 # 変数bに値10を代入 b = 10 # 変数aとbの値を足した結果を変数cに代入 c = a + b # 変数cの値を出力 print(c) # 出力: 15
累算代入演算子(複合代入演算子/拡張代入演算子」)
Pythonでは累算代入演算子(複合代入演算子、または拡張代入演算子)と呼ばれる、代入演算子を拡張した概念が存在します。
これらは、特定の演算(加算、減算、乗算、除算など)と、「代入」を一つの操作として組み合わせた演算子を指します。
以下の表に簡単な例をまとめてみました。ぱっと見ると難しいそうに見えますが、ゆっくり考えれば決して難しくはありません。
演算子 | 例 | 説明 |
+= | a += b | a = a + b と同じ |
-= | a -= b | a = a - b と同じ |
*= | a *= b | a = a * b と同じ |
/= | a /= b | a = a / b と同じ |
+= を例に詳しく解説します。
「+=」はPythonの累算代入演算子の一つで、「加算して代入する」という意味を持ちます。
# 変数xに5を代入 x = 5 # xの値に3を加え、その結果を再びxに代入(累算代入) x += 3 # xの最終的な値を出力 print(x) # 出力: 8
このコードでは、最初にx = 5
として変数x
に5を代入しています。次にx += 3
とすることで、x
の値に3を加え、その結果を再びx
に代入しています。この行は、x = x + 3
と同じ意味ですが、より簡潔に表現できます。
仮に累算代入演算子を利用しない場合は以下のように記載することになります。
# 変数xに5を代入 x = 5 # xの値に3を加え、その結果を再びxに代入 x = x + 3 # xの最終的な値を出力 print(x) # 出力: 8
累算代入演算子を使用した方が少し短く、一般的には読みやすいと考えられます。このような短縮形は特に繰り返しの多いコードや複雑なコードで便利です。
参考 様々な代入演算子
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
= | 値を代入 | x = 5 | xは5 |
+= | 加算後に代入 | x += 3 | xの値に3を加える |
-= | 減算後に代入 | x -= 2 | xの値から2を減算する |
*= | 乗算後に代入 | x *= 2 | xの値に2を乗じる |
/= | 除算後に代入 | x /= 3 | xの値を3で除算する |
%= | 剰余算後に代入 | x %= 3 | xの値を3で割った余り |
//= | 整数の除算後に代入 | x //= 3 | xの値を3で割った商(小数点以下切り捨て) |
**= | 冪乗後に代入 | x **= 3 | xの値を3乗する |
&= | ビットごとのAND演算後に代入 | x &= 3 | xと3のビットごとのAND |
|= | ビットごとのOR演算後に代入 | x |= 5 | xと3のビットごとのOR |
^= | ビットごとのXOR演算後に代入 | x ^= 3 | xと3のビットごとのXOR |
>>= | 右シフト演算後に代入 | x >>= 3 | xのビットを3つ右にシフト |
<<= | 左シフト演算後に代入 | x <<= 3 | xのビットを3つ左にシフト |
上から順にサンプルコードを付けて詳しく解説します。
+=(加算後に代入)
累算代入演算子「+=」を使用したサンプルコードです。
# リストに対する累算代入演算子の使用 numbers = [1, 2, 3] # リストの末尾に新たな要素 [4, 5] を追加 numbers += [4, 5] # 累算代入演算子を利用しない場合のコード:numbers = numbers + [4, 5] print(numbers) # 出力: [1, 2, 3, 4, 5]
このコードでは、最初にリストnumbers
を定義し、その後で累算代入演算子「+=」を使用して新たな要素をリストの末尾に追加しています。
参考 リスト
累算代入演算子を使用しない場合、numbers = numbers + [4, 5]
というように書くことになりますが、累算代入演算子を使用することでより短く簡潔に記述することができます。
-=(減算後に代入)
累算代入演算子「-=」を使用したサンプルコードです。
# 初期値が10の変数scoreを定義 score = 10 # scoreから3を引いて、その結果を再びscoreに代入 score -= 3 # 累算代入演算子を利用しない場合のコード:score = score - 3 # scoreの最終的な値を出力 print(score) # 出力: 7
このコードでは、最初にscore
という変数に10を代入し、その後で累算代入演算子「-=」を使用してその値から3を引き、その結果を再びscore
に代入しています。
累算代入演算子を使用しない場合、score = score - 3
というように書くことになりますが、「-=」を使用することでより短く簡潔に記述することができます。
*=(乗算後に代入)
累算代入演算子「*=」を使用したサンプルコードです。
# 初期値が5の変数productを定義 product = 5 # productに2を掛けて、その結果を再びproductに代入 product *= 2 # 累算代入演算子を利用しない場合のコード:product = product * 2 # productの最終的な値を出力 print(product) # 出力: 10
このコードでは、最初にproduct
という変数に5を代入し、その後で累算代入演算子「=」を使用してその値に2を掛け、その結果を再びproduct
に代入しています。
累算代入演算子を使用しない場合、product = product * 2
というように書くことになりますが、「=」を使用することでより短く簡潔に記述することができます。
/=(除算後に代入)
累算代入演算子「/=」を使用したサンプルコードです。
# 初期値が10の変数ratioを定義 ratio = 10 # ratioを2で割って、その結果を再びratioに代入 ratio /= 2 # 累算代入演算子を利用しない場合のコード:ratio = ratio / 2 # ratioの最終的な値を出力 print(ratio) # 出力: 5.0
このコードでは、最初にratio
という変数に10を代入し、その後で累算代入演算子「/=」を使用してその値を2で割り、その結果を再びratio
に代入しています。
累算代入演算子を使用しない場合、ratio = ratio / 2
というように書くことになりますが、「/=」を使用することでより短く簡潔に記述することができます。
また、「/=」を使用すると結果は浮動小数点数になることに注意してください。
%=(剰余算後に代入)
累算代入演算子「%=」を使用したサンプルコードです。
# 初期値が10の変数remainderを定義 remainder = 10 # remainderを3で割った余りを再びremainderに代入 remainder %= 3 # 累算代入演算子を利用しない場合のコード:remainder = remainder % 3 # remainderの最終的な値を出力 print(remainder) # 出力: 1
このコードでは、最初にremainder
という変数に10を代入し、その後で累算代入演算子「%=」を使用してその値を3で割った余りを計算し、その結果を再びremainder
に代入しています。
累算代入演算子を使用しない場合、remainder = remainder % 3
というように書くことになりますが、「%=」を使用することでより短く簡潔に記述することができます。
//=(整数の除算後に代入)
累算代入演算子「//=」を使用したサンプルコードです。
# 初期値が10の変数divisionを定義 division = 10 # divisionを3で割った商(小数点以下切り捨て)を再びdivisionに代入 division //= 3 # 累算代入演算子を利用しない場合のコード:division = division // 3 # divisionの最終的な値を出力 print(division) # 出力: 3
最初にremainder
という変数に10を代入し、その後で累算代入演算子「%=」を使用してその値を3で割った余りを計算し、その結果を再びremainder
に代入しています。
**=(べき乗後に代入)
累算代入演算子「**=」を使用したサンプルコード。
# 初期値が2の変数powerを定義 power = 2 # powerを3乗して、その結果を再びpowerに代入 power **= 3 # 累算代入演算子を利用しない場合のコード:power = power ** 3 # powerの最終的な値を出力 print(power) # 出力: 8
このコードでは、最初にpower
という変数に2を代入し、その後で累算代入演算子「=」を使用してその値を3乗し、その結果を再びpower
に代入しています。
&=(ビットごとのAND演算後に代入)
累算代入演算子「&=」を使用したサンプルコード。
# 初期値が5の変数bitwise_andを定義。二進数表記で5は「101」 bitwise_and = 5 # bitwise_andと3(二進数表記で「011」)のビットごとの論理積を計算し、その結果を再びbitwise_andに代入 bitwise_and &= 3 # 累算代入演算子を利用しない場合のコード:bitwise_and = bitwise_and & 3 # bitwise_andの最終的な値を出力 print(bitwise_and) # 出力: 1
最初にbitwise_and
という変数に5(二進数表記で「101」)を代入し、その後で累算代入演算子「&=」を使用してその値と3(二進数表記で「011」)のビットごとの論理積を計算し、その結果を再びbitwise_and
に代入しています。
累算代入演算子を使用しない場合、bitwise_and = bitwise_and & 3
というように書くことになります。
「&=」を使用することでより短く簡潔に記述することができます。
|=(ビットごとのOR演算後に代入)
累算代入演算子「|=」を使用したサンプルコード。
# 初期値が5の変数bitwise_orを定義。二進数表記で5は「101」 bitwise_or = 5 # bitwise_orと3(二進数表記で「011」)のビットごとの論理和を計算し、その結果を再びbitwise_orに代入 bitwise_or |= 3 # 累算代入演算子を利用しない場合のコード:bitwise_or = bitwise_or | 3 # bitwise_orの最終的な値を出力 print(bitwise_or) # 出力: 7
最初にbitwise_or
という変数に5(二進数表記で「101」)を代入し、その後で累算代入演算子「|=」を使用してその値と3(二進数表記で「011」)のビットごとの論理和を計算し、その結果を再びbitwise_or
に代入しています。
累算代入演算子を使用しない場合、bitwise_or = bitwise_or | 3
というように書くことになりますが、「|=」を使用することでより短く簡潔に記述することができます。
^=(ビットごとのXOR演算後に代入)
累算代入演算子「^=」を使用したサンプルコード。
# 初期値が5の変数bitwise_xorを定義。二進数表記で5は「101」 bitwise_xor = 5 # bitwise_xorと3(二進数表記で「011」)のビットごとの排他的論理和を計算し、その結果を再びbitwise_xorに代入 bitwise_xor ^= 3 # 累算代入演算子を利用しない場合のコード:bitwise_xor = bitwise_xor ^ 3 # bitwise_xorの最終的な値を出力 print(bitwise_xor) # 出力: 6
このコードでは、最初にbitwise_xor
という変数に5(二進数表記で「101」)を代入し、その後で累算代入演算子「^=」を使用してその値と3(二進数表記で「011」)のビットごとの排他的論理和を計算し、その結果を再びbitwise_xor
に代入しています。
累算代入演算子を使用しない場合、bitwise_xor = bitwise_xor ^ 3
というように書くことになりますが、「^=」を使用することでより短く簡潔に記述することができます。
>>=(右シフト演算後に代入)
累算代入演算子「>>=」を使用したサンプルコードです。
# 初期値が8の変数right_shiftを定義。二進数表記で8は「1000」 right_shift = 8 # right_shiftを2ビット右にシフトし、その結果を再びright_shiftに代入 right_shift >>= 2 # 累算代入演算子を利用しない場合のコード:right_shift = right_shift >> 2 # right_shiftの最終的な値を出力 print(right_shift) # 出力: 2
このコードでは、最初にright_shift
という変数に8(二進数表記で「1000」)を代入し、その後で累算代入演算子「>>=」を使用してその値を2ビット右にシフトし、その結果を再びright_shift
に代入しています。
累算代入演算子を使用しない場合、right_shift = right_shift >> 2
というように書くことになりますが、「>>=」を使用することでより短く簡潔に記述することができます。
<<=(左シフト演算後に代入)
累算代入演算子「<<=」を使用したサンプルコード。
# 初始値が1の変数left_shiftを定義。二進数表記で1は「1」 left_shift = 1 # left_shiftを3ビット左にシフトし、その結果を再びleft_shiftに代入 left_shift <<= 3 # 累算代入演算子を利用しない場合のコード:left_shift = left_shift << 3 # left_shiftの最終的な値を出力 print(left_shift) # 出力: 8
このコードでは、最初にleft_shift
という変数に1(二進数表記で「1」)を代入し、その後で累算代入演算子「<<=」を使用してその値を3ビット左にシフトし、その結果を再びleft_shift
に代入しています。
累算代入演算子を使用しない場合、left_shift = left_shift << 3
というように書くことになりますが、「<<=」を使用することでより短く簡潔に記述することができます。
Python:代入演算子のまとめ
始めてPythonを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。
Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!
読者料典 Python入門:学習カリキュラム ←こちらから!