Menu
日本語

Python 変数の使い方|代入・命名規則・再代入の基本

Pythonの変数の使い方を基礎から解説。代入の書き方、命名ルール、再代入の挙動、そしてハマらないための考え方までまとめました。

変数とは「名前」を付けること

Pythonにおける変数は、値に付ける名前のようなものです。変数名を書き、イコール記号を挟んで、値を書く。これだけです。

main.py
Output
Click Run to see the output here.

変数3つ、値3つ、型3つ。Pythonは何の型かを事前に伝えなくても、それぞれをそのまま並べて保持してくれます。値は = の後ろ、名前は = の前、というシンプルなルールです。

変数を一度作ってしまえば、あとはその値そのものを書くのと同じ感覚で、どこでも使えます。

main.py
Output
Click Run to see the output here.

名前が良いおかげで、下から2行目のコードはそれだけで意味が伝わります。変数名がしっかりしていると、コードが説明文のように読めるようになる。これこそが最大のメリットです。

代入は数学の「等号」ではない

数学の授業から来た人がつまずきやすいポイントがあります。Python の = は「等しい」という意味ではありません。「代入する」という意味です。つまり「= の後ろにある値を、前にある名前に結びつけなさい」ということ。Python はまず値を評価し、それから代入を行います。

なので、次のようなコードもまったく問題なく動きます。

main.py
Output
Click Run to see the output here.

count = count + 1 という書き方は、「count と count+1 が等しい」という数学的な主張ではありません(そもそも成り立ちません)。これは、まず count + 1計算して、その結果を count に代入し直す、という意味です。Python はまず式を評価し(0 + 1 なら 1 を得る)、そのあとで変数を更新します。

count = count + 1 は頻出なので、Python には省略記法が用意されています。count += 1 と書けば同じ動きになります。

再代入は値を書き換えるのではなく、ラベルを付け替える

Python の変数は、いつでも別の値を指すように変更できます。元の値そのものが書き換わるわけではなく、変数が別のものを指すようになるだけです。

main.py
Output
Click Run to see the output here.

最後の行に注目してください。mood は2行の間は文字列を保持していたのに、次の行では急に整数に変わっています。それでも Python は何も文句を言いません。これが「動的型付け(dynamic typing)」です。Python では変数自体に型があるのではなく、値のほうに型があります。プロトタイピングのときはこの柔軟さが便利ですが、関数の途中で気づかないうちに変数の意味が変わってしまうと、途端に厄介な存在になります。安全な使い方としては、値の中身にふさわしい名前を選び、その変数が表す「ひとつの意味」を寿命の最後まで変えないことです。

Python の変数名のルール

Python で使える変数名の条件は次のとおりです。

  • 先頭は英字またはアンダースコア(_)で始めること。
  • 使える文字は英字・数字・アンダースコアのみ。
  • 予約語(ifforclassreturn など数十個)は使えない。

たとえば、次の名前はすべて有効です。

main.py
Output
Click Run to see the output here.

次の名前はNGです:

  • 2nd_user — 数字から始められません。
  • user-name — ハイフンは使えません(Pythonは引き算として解釈してしまいます)。
  • class — 予約語です。
  • user name — 名前に空白は入れられません。

すでにお気づきの通り、変数名は大文字・小文字を区別します。totalTotalTOTAL はすべて別の変数として扱われ、Pythonはタイプミスを指摘してくれません。

命名規則(ネーミングルール)

絶対的なルールに加えて、Pythonコミュニティにはお決まりの命名規則があります。インタプリタが強制するわけではありませんが、エコシステム全体で広く共有されている慣習です。

  • lower_snake_case(python snake_case)は通常の変数や関数に使います: retry_countfetch_profile
  • UPPER_SNAKE_CASE は定数に使います: MAX_RETRIES = 5
  • PascalCase はクラス名用(これは後の章で扱います)。
  • 先頭アンダースコア_something)は「この名前はプライベート扱いです」というヒント。強制力はなく、あくまで慣習です。
  • 末尾アンダースコアclass_)は、予約語とかぶってしまう名前を使いたいときに役立ちます。

これらに沿って書いておけば、あなたのコードもほかのPythonistaが書くコードと同じ雰囲気になります。

名前は「意味」を伝えるものに

変数名を打つのは一瞬ですが、読むのはずっと大変です。数文字ぶん余計にタイプして、値の意味がちゃんと伝わる名前を選んでおくと、あとで読む人(たいていは未来の自分)が目を細めて悩む時間をぐっと減らせます。

比べてみましょう:

main.py
Output
Click Run to see the output here.

コードは同じ、出力も同じ。でも、何をやっているのか伝わるのは2番目のほうです。inx みたいな短い名前は、ループカウンタのようなごく狭いスコープなら問題ありませんが、それ以外の場面ではきちんと意味のわかる名前を付けましょう。

Python 変数の複数代入(使いどころは控えめに)

Python では、複数の変数に同じ値を一行で代入できます。

main.py
Output
Click Run to see the output here.

または、複数の値をまとめてアンパックすることもできます。

main.py
Output
Click Run to see the output here.

どちらも、コードが読みやすくなる場面(関数の戻り値をアンパックする場合など)では問題なく使えます。ただし最初の書き方 — = = = のチェーン — には少し注意が必要で、3つの変数がすべて 同じオブジェクト を指すことになります。これはリストのようなミュータブルな型では重要なポイントで、後ほど詳しく触れます。

この章のまとめ

  • name = value で変数を作成する。
  • 型を持つのは変数ではなく値。
  • 変数名には、守るべき厳格なルールと、いくつかの緩やかな慣習があり、どちらも大切にする価値がある。
  • 分かりやすい命名は、最も手軽なドキュメントになる。

次は、Python が実際にサポートしている値の種類 — 整数、浮動小数点数、文字列、真偽値 — と、それぞれを区別しておくことがなぜ役立つのかを見ていきます。

よくある質問

Pythonで変数を作るにはどうすればいい?

名前を決めて、= の右側に値を書くだけです。たとえば age = 30 と書けば、age という名前の変数に 30 が入ります。型を宣言する必要はなく、Pythonが自動で判断してくれます。

Pythonの変数名に使えるルールは?

使えるのは英字・数字・アンダースコア(_)で、先頭に数字は使えません。ifclass のような予約語もNGです。また大文字と小文字は区別されるので、totalTotalTOTAL はそれぞれ別の変数になります。慣習としては lower_snake_case(小文字+アンダースコア区切り)が一般的です。

Pythonの変数は途中で型が変わっても大丈夫?

大丈夫です。Pythonは動的型付けなので、同じ変数に最初は数値、あとから文字列を入れる、といったことも可能です。ただし便利な反面、関数の途中で変数の意味が変わるとバグの温床になりがち。そういうときは別名の変数を用意するのがおすすめです。

Coddyでコードを学ぼう

始める