Pythonの変数とは?名前の付け方と代入の順番を実行して確かめる|Python基礎講座 第1回
「x = 10 の = って、イコールじゃないの?」「変数の名前って何を付ければいいの?」「書いた順番を入れ替えたらエラーになった…」
Pythonを始めたばかりのころ、こんなふうに迷いますよね。この記事は、Pythonの基本を1テーマずつ押さえる連載「Python基礎講座」の第1回です。今回は変数とは何か・名前の付け方・代入の順番の3つを、実際にコードを動かしながら確かめます。
対象は、Pythonを始めたばかりの完全初心者の方です。難易度は入門レベルで、print() で文字を表示できれば読み進められます。動作確認は Python 3.13 で行いました。一緒に見ていきましょう! 😊
変数とは?スマホの連絡先に置きかえて考える

変数とは、値に名前を付けて、あとからその名前で呼び出せるようにする仕組みです。
イメージとしては、スマホの連絡先です。友だちに電話するたびに11桁の番号を打つ人はいませんよね。「田中さん」という名前で登録しておけば、名前を選ぶだけでかけられます。番号が変わったときも、登録を1か所直すだけです。
プログラムでも同じことをします。たとえば、月額980円のサービスの半年分・1年分・2年分を計算するとします。print(980 * 6)、print(980 * 12)、print(980 * 24) と数字をそのまま書いても動きますが、1,080円に値上げされたら3か所すべて直すことになります。1か所でも直し忘れたら、計算は静かにズレたままです。
サンプル1:変数を作って使う
変数を使うと、こう書けます。すでに1,080円へ値上げしたあとの形にしました。
# 変数を使う書き方(値上げのときは1行目だけ直せばOK)
monthly_fee = 1080 # 月額料金
print(monthly_fee * 6) # 半年分
print(monthly_fee * 12) # 1年分
print(monthly_fee * 24) # 2年分
実行結果はこうなりました。
6480
12960
25920
ポイントをまとめるとこんな感じです👇
monthly_fee = 1080で、1080という値にmonthly_feeという名前を付けています- 値段が変わっても、直すのは1行目(コメントを除く)だけです
980のような数字だけだと意味が伝わりませんが、monthly_feeなら「月額料金だな」と読めます
ここで大事なのが = の意味です。Pythonの = は「等しい」ではなく、「右側の値に、左側の名前を付ける」という命令です。これを代入と呼びます。
サンプル2:代入より先に使うとエラーになる
Pythonのコードは上の行から順番に実行されます。では、名前を付ける前に使うとどうなるでしょうか。
print(city)
city = "札幌"
実行すると、エラーで止まりました(ファイルの場所は環境によって変わるので …\ と省略しています)。
Traceback (most recent call last):
File "…\step2_nameerror.py", line 1, in <module>
print(city)
^^^^
NameError: name 'city' is not defined
NameError: name 'city' is not defined は「city という名前はまだ定義されていません」という意味です。1行目の時点では、Pythonはまだ2行目を実行していません。連絡先に登録する前に、名前で電話をかけようとしたようなものです。
直し方はかんたんで、2行を入れ替えて city = "札幌" を先に書くだけです。実行すると、札幌 と表示されました。
サンプル3:あとから値を変えると、計算結果はどうなる?
代入の順番で、いちばん勘違いしやすいのがここです。これ、実行せずに答えられますか? 最後の print(total) に何が表示されるか、予想してから読み進めてみてください。
price = 300 # 1個の値段
count = 4 # 個数
total = price * count # 合計を計算する
print(total)
count = 5 # 個数をあとから変更
print(total) # total はどうなる?

答えは 1200 のままです。「個数を5にしたのに、1500にならないの?」と思いますよね。
ここが重要です👇
total = price * countは、その行を実行した瞬間の値で計算し、結果の1200にtotalという名前を付けます- 「
price * countという式」を覚えているわけではありません - Excelのセルなら元の値を変えると再計算されますが、Pythonの変数は自動では計算し直されません
1500にしたいときは、count = 5 のあとに total = price * count をもう一度書きます。実際に足して実行すると、2回目の表示は 1500 になりました。「値を変えたら、その値を使う計算もやり直す」と覚えておくと安心です。
サンプル4:自分自身を使って更新する
代入には「右側を先に計算して、そのあと左側の名前に入れる」という順番があります。これを使うと、今の値をもとに新しい値を作れます。旅行の積み立てメモを書いてみましょう。
# 旅行の積み立てメモ
goal_amount = 60000 # 目標金額
saved_amount = 12000 # 今までに貯めた金額
monthly_saving = 8000 # 毎月の積立額
saved_amount = saved_amount + monthly_saving # 今月分を足す
remaining_amount = goal_amount - saved_amount # 目標まであといくら?
print("貯めた金額:", saved_amount, "円")
print("目標まで:", remaining_amount, "円")
実行結果はこちらです。
貯めた金額: 20000 円
目標まで: 40000 円
注目は saved_amount = saved_amount + monthly_saving の行です。数学なら成り立たない式ですが、Pythonでは次の順番で進みます。
- 右側を計算する(12000 + 8000 = 20000)
- 計算結果の 20000 を
saved_amountに入れ直す
同じ処理は saved_amount += monthly_saving と短くも書けます。慣れるまでは、長いほうの書き方で流れを確認するのがおすすめです。
サンプル5:2つの変数の中身を入れ替える
順番を間違えると、エラーが出ないまま結果だけおかしくなることもあります。左手のりんごと、右手のみかんを入れ替えてみましょう。
left_hand = "りんご"
right_hand = "みかん"
# 入れ替えたつもりのコード
left_hand = right_hand
right_hand = left_hand
print("左手:", left_hand)
print("右手:", right_hand)

どちらも「みかん」になってしまいました。原因は、1行ずつ追うとわかります。
left_hand = right_handで、left_handの中身が「みかん」に変わる。この時点で「りんご」はどの変数からも呼び出せなくなるright_hand = left_handは、もう「みかん」になったleft_handを右手に入れるだけ
正しい入れ替え方は2つあります。
left_hand = "りんご"
right_hand = "みかん"
# 方法1:一時的な変数に控えておく
temporary = left_hand
left_hand = right_hand
right_hand = temporary
print("左手:", left_hand, "/ 右手:", right_hand)
# 方法2:Pythonらしい1行の書き方(もう一度入れ替えて元に戻す)
left_hand, right_hand = right_hand, left_hand
print("左手:", left_hand, "/ 右手:", right_hand)
左手: みかん / 右手: りんご
左手: りんご / 右手: みかん
方法1は、先に別の変数へ控えておくやり方です。方法2は a, b = b, a の形で、右側の値をまとめて取り出してから左側へ入れるので、途中で値が消えません。順番の考え方がわかる方法1を理解してから、ふだんは短い方法2を使うとよいでしょう。
変数の名前の付け方:エラーになる名前と事故になる名前
最後は名前のルールです。実際に試して出たエラーを並べました。
| 書いたコード | 実際に出たエラー | 原因 |
|---|---|---|
2nd_price = 800 |
SyntaxError: invalid decimal literal |
数字で始まる名前は使えない |
class = "1年A組" |
SyntaxError: invalid syntax |
class はPythonの予約語 |
price = 500 のあとに print(Price) |
NameError: name 'Price' is not defined. Did you mean: 'price'? |
大文字と小文字は別の名前 |
sum = 700 のあとに sum(numbers) |
TypeError: 'int' object is not callable |
組み込み関数の名前を上書きした |
⚠️ 特に注意したいのは4行目です。sum = 700 の行そのものはエラーになりません。あとで合計を出す sum() を呼んだときに初めて止まるので、原因に気づきにくいんです。list・max・str なども同じ理由で、変数名には避けましょう。
予約語は import keyword のあと print(len(keyword.kwlist)) で数えられます。Python 3.13で試すと35個でした。全部覚える必要はなく、エラーが出たときに疑えば十分です。
ルールがわかったら、読みやすい名前のコツは次の3つです。
- 中身がわかる名前にする:
a・b・cよりgoal_amount・saved_amount。サンプル4をaやbで書き直すと、計算は同じでも何の数字か読めなくなります - 小文字と
_でつなぐ:monthly_feeの形です。Pythonの書き方の指針であるPEP 8でも、変数名は小文字を_でつなぐ形とされています - 半角の英数字で書く:
なまえ = "ok"のような日本語の名前も動きましたが、入力の切り替えが増えて打ち間違いのもとになります
まとめ
- 変数は、値に名前を付けて呼び出す仕組み。値が変わっても直すのは1か所で済む
=は「等しい」ではなく代入。右側を先に計算してから、左側の名前に入れる- コードは上から順に動くので、代入より先に使うと NameError になる
- あとから値を変えても、計算済みの変数は自動で変わらない
- 入れ替えは
a, b = b, a。名前は小文字と_で、中身がわかるものにする
次回の第2回は、int・float・str・bool というデータ型の見分け方を取り上げます。「むずかしそう」を「できそう」に変えていきましょう。サンプル3の個数や値段を変えて、予想どおりの結果になるか、ぜひ試してみてください! 🚀
\ 読んだら、次は自分で作ってみよう /
筆者が運営する無料の入門コース「作って学ぶPythonプログラミング入門」では、こうした基本文法を、割り勘計算機・おみくじ・数当てゲームなどを作りながら身につけます。各章末の定着ドリル(全42問)で、自分の手で書く練習まで。最初の4レッスンは登録なしで読めます。
こちらも読まれています
📚 関連商品・おすすめ書籍
※本記事にはアフィリエイトリンクが含まれます。




