変数を使う
このレッスンで分かること
- 変数は
name = "Ada"の形で「名前に値を結びつける」道具です- 型は宣言不要 (動的型付け)、右辺の値で自動的に決まります
- 最小例は
price = 1000; total = price * 1.1
変数を使う とは
計算結果を変数に入れて返す方法を学びます。本レッスンでは、変数を使う の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
変数とは何か
Python で何かをプログラミングするとき、計算した値や受け取ったデータを 一時的にしまっておく入れ物 が必ず必要になります。その入れ物が 変数 です。変数は name = 'Ada' のように = で値を結びつけて作ります。これは数学の「等しい」ではなく、右辺の値を左辺の名前に 結びつける という意味です。
変数はラベルを貼った箱ではなく、値に名札を付ける付箋のようなもの、と考えるとイメージしやすいです。
変数を使う最大のメリットは、計算結果を 後で何度でも使い回せる ことです。同じ式を何度も書かなくて済み、変更時には変数の値を 1 か所だけ書き換えれば全体に反映されます。たとえば商品の税込価格を price = 1000 * 1.1 と書いておけば、税率が変わっても 1.1 を 1.08 に直すだけで済みます。同じ値を何度も書くと、後で修正するときに必ずどこかを書き換え忘れるので、変数 を使う癖をつけておくと将来のバグを大きく減らせます。
文法のおさらい
もっとも基本的な変数の書き方は次の通りです。
Python
name = 'Ada'
age = 36
is_engineer = True左辺が 変数名、右辺が 値 で、= でつなぎます。Python では型を宣言する必要がなく、右辺の値に応じて自動的に型が決まります。これを 動的型付け と呼びます。int str bool といった型は、後ろの章で出てくる type 関数を使うと確認できます。
| 変数名 | 右辺 | 推定される型 |
|---|---|---|
name | 'Ada' | str |
age | 36 | int |
price | 1000.5 | float |
is_engineer | True | bool |
items | [1, 2, 3] | list |
動的型付けは
intstrboolなどの型を明示しなくてよい一方で、思わぬ型が入っているとバグになるので注意です。
変数名には英数字とアンダースコア _ が使えます。スタイルガイド PEP 8 では snake_case (小文字 + アンダースコア) を推奨しています。UserName のような PascalCase は class 名に使う慣習なので、変数名には使いません。また、変数名の先頭は数字にできないので、1st_user のような書き方はエラーになります。first_user のように単語を先頭にしましょう。
動きを追ってみる
次の例では、税抜価格を変数に入れ、税率と掛け合わせて税込価格を計算しています。
Python
price = 1000
tax_rate = 0.1
total = price + price * tax_rate
return totalprice tax_rate total の 3 つの 変数 が登場します。total の右辺で price を 2 回使い回せているのがポイントです。値を 変数 に入れたことで、同じ数 1000 を何度も書く必要がなくなりました。もし税抜価格を 1200 に変えたければ、最初の price = 1000 を price = 1200 に書き換えるだけで、計算式は一切いじらずに済みます。
図の流れを順序リストで書き直すと、次の通りです。
priceに1000を代入するtax_rateに0.1を代入するprice * tax_rateを計算する (100.0)total = price + 100.0でtotalに1100.0が入るtotalを返す
この図のように、変数 は左から右へと順番に作られ、後の式で再利用されます。Python は基本的に上から下へ 1 行ずつ進むので、total を使うときには total の代入がそれより前に書かれている必要があります。
変数の上書き
変数は何度でも 再代入 できます。再代入 とは、すでに値が入っている変数に別の値を入れ直すことです。
Python
count = 0
count = count + 1
count = count + 1
return count右辺の count + 1 は 代入前 の count を使って計算され、その結果が左辺の count に入ります。1 行ずつ追うと、count は 0 → 1 → 2 と変わります。Python では count += 1 という省略形も使えて、こちらの方がよく見かける書き方です。
数学では
count = count + 1は成り立ちませんが、プログラミングの=は「右辺を評価して左辺に代入」の意味なので問題なく動きます。
よくある間違い
変数まわりでつまずきやすいポイントを 3 つ紹介します。
- 未定義の変数を使う —
return totalと書く前にtotal = ...を書き忘れるとNameErrorになります。エラーメッセージにname 'total' is not definedと出たら、その変数を作る行が抜けていないか確認しましょう - 左辺と右辺を逆にする —
1000 = priceのように書くとエラーになります。変数は必ず=の左側です - 予約語を変数名にする —
classifforなどの予約語は変数名に使えません。class_nameのように少し言い換えると安全です。listやdictのような組み込み関数名も避けたほうが無難です
ここまでの要点
変数は = で「名前に値を結びつける」道具。Python は動的型付けなので型宣言は不要。同じ値を何度も書かず、変数経由で参照することで保守しやすいコードになる。
やってみよう
この問題では、税抜価格 price を引数に受け取り、消費税 10% を加えた税込価格を返す関数 calc_total を実装します。price tax_rate total という 3 つの 変数 を使い、最後に total を return してください。print は使わず、必ず return で値を返すのがポイントです。テストでは 1000 500 0 2500 などさまざまな価格が渡されるので、特定の値だけ通る書き方ではなく、汎用的に動く式を書きましょう。
よくある質問
Q. 変数名のつけ方にルールはありますか?
A. 意味が一目で分かる名前を付け、1 文字(a, b)は短いループカウンタだけに使うのが原則です。Python は snake_case(user_name)、Java や JavaScript は camelCase(userName)が慣習です。略語の乱用は避け、count を cnt と書くより count のまま書きましょう。
Q. let と var、Python の変数の違いは?
A. Python は宣言キーワードなしで代入即作成です(x = 1)。JavaScript の let はブロックスコープ、var は関数スコープで巻き上げが起きるため、現代のコードでは let / const を使います。再代入しない値には const を選び、意図を読み手に伝えましょう。
Q. 宣言した変数の値はあとから変えても良いですか?
A. 型が変わらない範囲ならいつでも代入し直して構いません。ただし途中で意味(例えば user_id にカウントを代入)を変えると追跡が難しくなるため、別の名前にした方が読みやすくなります。再代入したくない値は Python なら大文字定数、JS なら const にすると意図が伝わります。
次のレッスン
次は type で型を調べる で、計算結果を変数に入れて返す方法を学びます を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- 変数 の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. 変数 とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
要件
- tax_rate という変数を定義し 0.1 を代入する
- total という変数に price + price * tax_rate を代入する
- total を return で返す
入出力例
test-cases.txt
calc_total(1000) → 1100
calc_total(500) → 550
calc_total(0) → 0
calc_total(2500) → 2750