変数を使う

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • 変数は name = "Ada" の形で「名前に値を結びつける」道具です
  • 型は宣言不要 (動的型付け)、右辺の値で自動的に決まります
  • 最小例は price = 1000; total = price * 1.1

変数を使う とは

計算結果を変数に入れて返す方法を学びます。本レッスンでは、変数を使う の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

変数とは何か

Python で何かをプログラミングするとき、計算した値や受け取ったデータを 一時的にしまっておく入れ物 が必ず必要になります。その入れ物が 変数 です。変数は name = 'Ada' のように = で値を結びつけて作ります。これは数学の「等しい」ではなく、右辺の値を左辺の名前に 結びつける という意味です。

変数はラベルを貼った箱ではなく、値に名札を付ける付箋のようなもの、と考えるとイメージしやすいです。

変数を使う最大のメリットは、計算結果を 後で何度でも使い回せる ことです。同じ式を何度も書かなくて済み、変更時には変数の値を 1 か所だけ書き換えれば全体に反映されます。たとえば商品の税込価格を price = 1000 * 1.1 と書いておけば、税率が変わっても 1.11.08 に直すだけで済みます。同じ値を何度も書くと、後で修正するときに必ずどこかを書き換え忘れるので、変数 を使う癖をつけておくと将来のバグを大きく減らせます。

文法のおさらい

もっとも基本的な変数の書き方は次の通りです。

Python

name = 'Ada' age = 36 is_engineer = True

左辺が 変数名、右辺が で、= でつなぎます。Python では型を宣言する必要がなく、右辺の値に応じて自動的に型が決まります。これを 動的型付け と呼びます。int str bool といった型は、後ろの章で出てくる type 関数を使うと確認できます。

変数名右辺推定される型
name'Ada'str
age36int
price1000.5float
is_engineerTruebool
items[1, 2, 3]list

動的型付けは int str bool などの型を明示しなくてよい一方で、思わぬ型が入っているとバグになるので注意です。

変数名には英数字とアンダースコア _ が使えます。スタイルガイド PEP 8 では snake_case (小文字 + アンダースコア) を推奨しています。UserName のような PascalCaseclass 名に使う慣習なので、変数名には使いません。また、変数名の先頭は数字にできないので、1st_user のような書き方はエラーになります。first_user のように単語を先頭にしましょう。

動きを追ってみる

次の例では、税抜価格を変数に入れ、税率と掛け合わせて税込価格を計算しています。

Python

price = 1000 tax_rate = 0.1 total = price + price * tax_rate return total

price tax_rate total の 3 つの 変数 が登場します。total の右辺で price を 2 回使い回せているのがポイントです。値を 変数 に入れたことで、同じ数 1000 を何度も書く必要がなくなりました。もし税抜価格を 1200 に変えたければ、最初の price = 1000price = 1200 に書き換えるだけで、計算式は一切いじらずに済みます。

diagram (will load when visible)

図の流れを順序リストで書き直すと、次の通りです。

  1. price1000 を代入する
  2. tax_rate0.1 を代入する
  3. price * tax_rate を計算する (100.0)
  4. total = price + 100.0total1100.0 が入る
  5. total を返す

この図のように、変数 は左から右へと順番に作られ、後の式で再利用されます。Python は基本的に上から下へ 1 行ずつ進むので、total を使うときには total の代入がそれより前に書かれている必要があります。

変数の上書き

変数は何度でも 再代入 できます。再代入 とは、すでに値が入っている変数に別の値を入れ直すことです。

Python

count = 0 count = count + 1 count = count + 1 return count

右辺の count + 1代入前count を使って計算され、その結果が左辺の count に入ります。1 行ずつ追うと、count012 と変わります。Python では count += 1 という省略形も使えて、こちらの方がよく見かける書き方です。

数学では count = count + 1 は成り立ちませんが、プログラミングの = は「右辺を評価して左辺に代入」の意味なので問題なく動きます。

よくある間違い

変数まわりでつまずきやすいポイントを 3 つ紹介します。

  1. 未定義の変数を使うreturn total と書く前に total = ... を書き忘れると NameError になります。エラーメッセージに name 'total' is not defined と出たら、その変数を作る行が抜けていないか確認しましょう
  2. 左辺と右辺を逆にする1000 = price のように書くとエラーになります。変数 は必ず = の左側です
  3. 予約語を変数名にするclass if for などの予約語は変数名に使えません。class_name のように少し言い換えると安全です。listdict のような組み込み関数名も避けたほうが無難です
この章のポイント

ここまでの要点 変数は = で「名前に値を結びつける」道具。Python は動的型付けなので型宣言は不要。同じ値を何度も書かず、変数経由で参照することで保守しやすいコードになる。

やってみよう

この問題では、税抜価格 price を引数に受け取り、消費税 10% を加えた税込価格を返す関数 calc_total を実装します。price tax_rate total という 3 つの 変数 を使い、最後に totalreturn してください。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 つができることを確認しましょう。

  1. 変数 の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. 変数 とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

要件

  1. tax_rate という変数を定義し 0.1 を代入する
  2. total という変数に price + price * tax_rate を代入する
  3. total を return で返す

入出力例

test-cases.txt

calc_total(1000)1100 calc_total(500)550 calc_total(0)0 calc_total(2500)2750

ヒント

main.py
main.py
学習モード

メモ

変数を使う

⌘S で保存