PR

【Python】「+=」って?代入演算子を3分でわかりやすく解説

Python

Pythonの代入演算子とは、ある値を変数に「代入」するために利用されるものです。

# 変数aに値を代入
a = 5

print(a)
# 結果 ⇒ 5

参考 変数とは? / print関数の使い方

簡単に説明すると、「a = 5」の "" のこと。

Pythonには様々な代入演算子があります。それぞれが特定の操作と値の代入を一度に行うことを特徴としています。このページでは代入演算子の基本から応用まで、3分でわかりやすくご説明します。

このページで学べる内容
  • Python:代入演算子とは?
    • 累算代入演算子とは?
  • 代入演算子の使い方とコツ

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

参考 Python:基本の文法ルール

スポンサーリンク

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 += ba = a + b  と同じ
 -=a -= ba = a - b  と同じ
 *=a *= ba = a * b  と同じ
 /=a /= ba = 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 = 5xは5
+=加算後に代入x += 3xの値に3を加える
-=減算後に代入x -= 2xの値から2を減算する
*=乗算後に代入x *= 2xの値に2を乗じる
/=除算後に代入x /= 3xの値を3で除算する
%=剰余算後に代入x %= 3xの値を3で割った余り
//=整数の除算後に代入x //= 3xの値を3で割った商(小数点以下切り捨て)
**=冪乗後に代入x **= 3xの値を3乗する
&=ビットごとのAND演算後に代入x &= 3xと3のビットごとのAND
|=ビットごとのOR演算後に代入x |= 5xと3のビットごとのOR
^=ビットごとのXOR演算後に代入x ^= 3xと3のビットごとのXOR
>>=右シフト演算後に代入x >>= 3xのビットを3つ右にシフト
<<=左シフト演算後に代入x <<= 3xのビットを3つ左にシフト
Python:様々な代入演算子

上から順にサンプルコードを付けて詳しく解説します。

+=(加算後に代入)

累算代入演算子「+=」を使用したサンプルコードです。

# リストに対する累算代入演算子の使用
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の代入演算子:まとめ
  • 代入演算子
    変数に値を設定するための特殊な演算子で、「=」がその最も基本的な形。
  • 累算代入演算子
    演算と代入を同時に行う特殊な演算子。変数の既存の値に対して何らかの演算を行い、その結果を再び同じ変数に代入する。
# 基本的な代入
x = 5
print(x)  # 出力: 5

# 加算して代入
x += 3
print(x)  # 出力: 8

# 減算して代入
x -= 2
print(x)  # 出力: 6

# 乗算して代入
x *= 2
print(x)  # 出力: 12

# 除算して代入
x /= 3
print(x)  # 出力: 4.0

# 剰余を求めて代入
x %= 3
print(x)  # 出力: 1.0

# 冪乗して代入
x **= 3
print(x)  # 出力: 1.0

# ビット演算(AND)して代入
y = 4  # 4の二進数表現: 100
y &= 2 # 2の二進数表現: 10
print(y)  # 出力: 0 (AND演算の結果)

# ビット演算(OR)して代入
y = 4  # 4の二進数表現: 100
y |= 3 # 3の二進数表現: 11
print(y)  # 出力: 7 (OR演算の結果)
演算子説明結果
=値を代入x = 5xは5
+=加算後に代入x += 3xの値に3を加える
-=減算後に代入x -= 2xの値から2を減算する
*=乗算後に代入x *= 2xの値に2を乗じる
/=除算後に代入x /= 3xの値を3で除算する
%=剰余算後に代入x %= 3xの値を3で割った余り
//=整数の除算後に代入x //= 3xの値を3で割った商(小数点以下切り捨て)
**=冪乗後に代入x **= 3xの値を3乗する
&=ビットごとのAND演算後に代入x &= 3xと3のビットごとのAND
|=ビットごとのOR演算後に代入x |= 5xと3のビットごとのOR
^=ビットごとのXOR演算後に代入x ^= 3xと3のビットごとのXOR
>>=右シフト演算後に代入x >>= 3xのビットを3つ右にシフト
<<=左シフト演算後に代入x <<= 3xのビットを3つ左にシフト
Python:様々な代入演算子

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました