【2026】Pythonで変数を使いこなそう!定義・初期化・命名ルール・スコープまで解説

Pythonをこれから学び始める人にとって、変数の理解は最初の大きなステップです。変数の仕組みが分かると、コードの流れがつかみやすくなり、学習全体がぐっとスムーズになります。

この記事では、Pythonの変数を使いこなすために必要な基礎知識として、定義の方法、初期化の考え方、命名ルール、スコープの仕組みまで丁寧に解説します。実践に役立つサンプルコードも交えながら、初心者でも理解しやすい内容です。

Pythonの基礎をしっかり固め、次のステップへ自信を持って進んでいきましょう。

Pythonの変数とは

プログラミングにおける変数は、値を扱うための「箱」のような存在です。数値・文字列・リストなど、さまざまなデータを一時的に入れておき、必要に応じて取り出したり入れ替えたりできます。

ただしPythonでは、変数に値そのものを保持するわけではなく、値が置かれている場所を指し示す「札(ラベル)」として働きます。このため、複数の変数が同じ値を指すことがあったり、値を変更すると別の場所を指すようになったりする特徴があります。

こうした仕組みは最初は少し不思議に感じるかもしれませんが、Pythonの柔軟さを支える大切なポイントです。変数の考え方を理解しておくと、後の学習がスムーズになり、コードの流れも把握しやすくなります。

Pythonの「型」とは

プログラムで扱う値には、必ず「型(データ型)」があります。型とは、その値がどんな種類のデータなのかを示す性質のことで、Pythonでも必ず何らかの型が付いています。

Pythonでよく使われる主要な型をまとめてみましょう。

型名説明
int(整数)数値計算で使う基本的な整数型10
float(浮動小数点)小数を扱うための型3.14
str(文字列)文字の集まりを扱う型“Hello”
bool(真偽値)条件判断で使われる型True / False
list(リスト)複数の値を順序付きで保持する型[1, 2, 3]
tuple(タプル)変更できない(イミュータブル)順序付き集合(1, 2, 3)
dict(辞書)キーと値の組み合わせを扱う型{“name”: “Alice”}
set(集合)重複を持たない値の集合{1, 2, 3}

このように、Pythonには用途ごとに多様な型が用意されています。型を理解しておくことで、変数の扱い方が明確になり、コードの意図もより掴みやすくなります。

Pythonの動的型付けとは

Pythonは「動的型付け」と呼ばれる仕組みを採用しており、変数の型を事前に宣言しなくても使えるという特徴があります。

値を代入した瞬間に、その値に応じて型が自動的に決まるため、コードを書き始めるハードルが低く、初心者でも扱いやすいのが大きなメリットです。また途中で別の型の値を代入することも可能で、柔軟な書き方ができます。

一方で、プログラミング言語には「静的型付け」と呼ばれる方式もあります。こちらは変数の型をあらかじめ決めておき、異なる型の値を代入するとエラーになる仕組みです。

動的型付けと静的型付けの違いを整理してみましょう。

特徴動的型付け(Python)静的型付け(C, Javaなど)
型の決定タイミング実行時に決まるプログラム記述時に決まる
型宣言の必要性不要必要
途中で別の型を代入可能原則不可
柔軟性高い低め
エラー発見のタイミング実行してみないと分からない実行前に検出される
向いている用途スクリプト、試作、データ処理大規模開発、厳密な型管理

このように、動的型付けは柔軟で扱いやすい一方、型に関するエラーを見落としやすい側面もあります。特徴を理解しておくことで、Pythonの便利さと注意点をバランスよく押さえられるようになるでしょう。

Pythonの変数や型の理解をさらに深めたい方には、「Python基礎セミナー講習」がおすすめです。Pythonの基礎をより実践的な形で体系的に学べるため、独学だけでは理解しにくいポイントを短期間でしっかり身につけられます。

Pythonを仕事で活用したい方や基礎から応用まで一気に習得したい方は、受講を検討してみてはいかがでしょうか。

セミナー名Python基礎セミナー講習
運営元GETT Proskill(ゲット プロスキル)
価格(税込)27,500円〜
開催期間2日間
受講形式対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング

Python基礎セミナー講習はこちら

また、Pythonの特徴や将来性について知りたい方は、こちらも参考にしてください。

【2025】Pythonの将来性とは?他の言語との比較や学習メリットを徹底解説

Python変数を定義する方法【サンプルコード付き】

Python変数を定義する方法【サンプルコード付き】

Python変数の定義は、値を保存したり処理に活用したりするための基本操作で、Pythonの書きやすさを大きく支える重要なポイントです。ここでは、変数の宣言と代入の基礎を解説します。

  • 変数の宣言と代入
  • 複数代入(アンパック代入)の使い方
  • ミュータブルとイミュータブル

変数の宣言と代入

Pythonでは、変数を使う際に特別な宣言は必要ありません。変数名を書いて値を代入するだけで、その瞬間から利用できるようになります。

price = 300
name = “Apple”
is_active = True

どの型でも「変数名 = 値」という統一されたシンプルな書き方で定義できるため、覚える負担が少ないのが魅力です。まずはこの基本的な代入方法に慣れておくと、コードがぐっと書きやすくなります。

複数代入(アンパック代入)の使い方

Pythonでは、複数の変数に一度に値を代入する「複数代入」や、リスト・タプルの中身を取り出して変数に割り当てる「アンパック」がよく使われます。処理を簡潔に書けるため、実務でも役立つテクニックです。

x, y = 10, 20
a, b, c = [1, 2, 3]

「x, y = 10, 20」のように書くと、左側の変数と右側の値が順番に対応して代入されます。リストやタプルを分解して代入する場合も同じ仕組みで、[1, 2, 3] の各要素が a, b, c に割り当てられます。これを「アンパック」と呼びます。

複数代入はコードを短く、読みやすくするための優れた機能です。特にPythonらしい書き方なので、積極的に使えるようにしておくと表現の幅が広がります。

ミュータブルとイミュータブル

Pythonの変数の振る舞いを理解するうえで重要なのが、オブジェクトが「ミュータブル(変更可能)」か「イミュータブル(変更不可)」かという違いです。同じように代入しても、変更操作の結果が変わるため、最初に把握しておくと混乱を防げます。

# ミュータブル(リスト)
a = [1, 2]b = a
b.append(3)

print(a)
print(b)

# イミュータブル(整数)
x = 10
y = x
y = y + 5

print(x)
print(y)

【実行結果】
[1, 2, 3]
[1, 2, 3]
10
15

リストはミュータブルなため、「b = a」で同じリストを指すようになり、b.append(3)の結果がaにも反映されます。整数はイミュータブルなので、「y = y + 5」とすると新しい整数オブジェクトが作られ、元のxは変化しません。

このように、Pythonの変数は値そのものではなく、値を置いた場所への参照を持つため、ミュータブルかどうかで挙動に差が出ます。

Python変数に初期化は必要?

Python変数に初期化は必要?

Pythonでは、変数を使う前に必ずしも初期化が必要というわけではありません。しかし、状況によっては初期化しておかないとエラーが発生したり、意図しない動作につながる場合があります。ここでは、Python変数の初期化について解説します。

  • 初期化が必要なケース
  • 空の状態を明示:Noneを使った初期化

初期化が必要なケース

Pythonの変数は、初期化しなくても使える場面が多いものの、特定の状況では初期化しておかないと問題が発生します

初期化が必要な代表的なケースを挙げてみましょう。

  • 条件分岐のどこにも値が設定されない可能性があるとき
  • 関数内で変数を使うが、実行の流れによって値が決まらないことがあるとき
  • ループの外でも変数を参照したいとき
  • 後で値を更新する前提で、空の状態を明確にしておきたいとき

たとえば次のような例では、変数の初期化が必要です。

count = 0 # 初期化
for i in range(5):
­­ count += 1

print(count)

【実行結果】
5

例の場合、事前に変数「count」を初期化しておかないと、ループの中の演算式「count += 1」で未定義の変数を参照することになってしまい、エラーが発生します。

このように「あとで使う前提」の変数は、最初に値を入れておくことで安全に使えるようになるのです。

空の状態を明示:Noneを使った初期化

Pythonでは、値がまだ決まっていない状態を表すために「None」を使うのが一般的です。「空のまま」「まだ値がないことを明示する」目的で利用され、柔軟な初期化ができるのが特徴です。

result = None # 初期化

value = 5

if value > 10:
­­ result = “大きい”
else:
­­ result = “小さい”

print(result)

【実行結果】
小さい

「result = None」としておくことで、「今は値が決まっていないが、後で入れる予定がある」状態を表せます。条件分岐などで後から値を設定する場合には、Noneを初期値にしておくことで、変数の有無を気にせず扱えるのがメリットです。

Python変数の命名ルール

Python変数の命名ルール
出典:PEP8ドキュメント

Pythonには「PEP8」と呼ばれる公式スタイルガイドがあり、読みやすく保守しやすいコードを書くためのルールが体系的にまとめられています。変数名の付け方もこのガイドラインに含まれており、Pythonらしいコードを書くうえで欠かせない基準です。

Pythonの変数名に関する基本ルールは次のとおりです。

  • 小文字+アンダースコアで表すスネークケースを使う
  • 役割がひと目で分かる、意味のある名前を付ける
  • 真偽値の変数は「is_XXX」「has_XXX」のように意図を明確にする

PEP8にはこのほかにも細かな命名ルールやスタイル上の注意点が整理されています。より深く知りたい場合は、公式ドキュメントを参照すると理解がさらに進みます。

Pythonで避けるべき変数名

Pythonでは変数名に自由な名前を付けられますが、書き方によっては思わぬエラーや不具合につながることがあります。

特に避けるべき変数名の例は次のとおりです。

  • 「for」「if」「class」などの予約語
  • 「list」「str」「dict」など標準型と同名の名前
  • 「data」「x」のように用途が曖昧で読み手に意図が伝わらない名前
  • 大文字小文字だけが異なる紛らわしい命名(例:Userとuser)

こうした点を意識して変数名を選ぶことで、予期せぬエラーを防ぎ、理解しやすいコードに近づけられます。

Python変数の参照範囲(スコープ)とは

Python変数のスコープ

Pythonでは、変数が「どこから参照できるか」を表す範囲のことをスコープ(scope)と呼びます。スコープを理解していないと、「変数が参照できない」「値が反映されない」などの混乱が起きやすく、初心者がつまずくポイントのひとつです。

ここでは、それぞれの違いをサンプルコードとともに分かりやすく解説します。

  • 関数内で利用する変数:ローカル変数
  • グローバル変数とnonlocalの使い分け方

関数内で利用する変数:ローカル変数

ローカル変数とは、関数の内部で定義された変数のことです。関数の外からはアクセスできず、一時的な処理を行う際に利用されます。

def show_number():
­­ num = 10 # ローカル変数
­­ print(“関数内:”, num)

show_number()
print(“関数外:”, num) # ここでは参照できない

【実行結果】
関数内: 10
NameError: name ‘num’ is not defined

このようにスコープを分けることで、意図しない値の変更を防ぎ、安全なコードが書けるようになります。

グローバル変数とnonlocalの使い分け方

グローバル変数は、プログラム全体から参照できる変数です。関数内で値を変更するには、「global」宣言が必要になります。また、関数が入れ子になっている場合は、外側の関数の変数を操作するために「nonlocal」を使います

どちらも扱い方を誤ると予期しない挙動につながるため、正しい使い分けが重要です。

# グローバル変数を定義(どこからでも参照できる変数)
count = 0

# 【関数】update_countを定義
def update_count():
­ ­­ ­global count # グローバル変数 count を関数の中で使う宣言
­ ­­ ­count += 1 # count の値を 1 増やす

# 【関数】update_countの呼び出し・実行
update_count()
print(“グローバル変数:”, count)

# 【関数】outerを定義
def outer():
­ ­­ ­msg = “outer” # outer のローカル変数

­ ­­ ­# 【関数】innerを定義(outer の中にある入れ子の関数)
­ ­­ ­def inner():
­ ­­ ­­ ­­ ­nonlocal msg # 一つ外側のスコープ(outer)の msg を使う宣言
­ ­­ ­­ ­­ ­msg = “inner” # outer の msg を書き換える

­ ­­ ­# 【関数】innerの呼び出し・実行
­ ­­ ­inner()
­ ­­ ­print(“nonlocalの結果:”, msg)

# 【関数】outerの呼び出し・実行
outer()

【実行結果】
グローバル変数: 1
nonlocalの結果: inner

上の例では、次のように役割が分かれています。

  • 「def update_count():」「def outer():」「def inner():」→ 関数を定義している部分
  • 「update_count()」「outer()」「inner()」→関数を呼び出して実行している部分

countは、関数の外で定義されたグローバル変数です。「global count」と宣言することで、update_count() の中から値を更新できます。

一方nonlocalは、入れ子になった関数の一つ外側のスコープの変数を操作したいときに使います。例では、msgはouter() のローカル変数ですが、inner() で「nonlocal msg」と書くことで、outer() 側のmsgを”inner”に書き換えています。

グローバル変数の乱用はNG!その理由と注意点

グローバル変数は便利ですが、乱用するとバグの温床になります。どこからでも値を変更できるため、「いつ・どこで値が変わったのか分からなくなる」という問題が起きやすいからです。

そのため、グローバル変数を扱う際は、次の点を意識すると安全です。

  • 本当に必要なときだけ使う
  • 関数の返り値を活用して値を受け渡す
  • 状態管理が複雑になる場合はクラス化を検討する
  • 処理の流れ(定義と呼び出し)を明確にする

このような形でグローバル変数を正しく理解することで、予期しない挙動を防ぎ、読みやすく保守しやすいコードになります。

関数やスコープ、変数の扱い方を体系的に学びたい方には、「Python基礎セミナー講習」がおすすめです。初心者向けに実例と演習を通して理解を深める内容になっていますので、興味があれば参加してみるとよいでしょう。

Python基礎セミナー講習はこちら

また、Pythonの基礎を身につけるためには、変数に加えて構文の理解も欠かせません。こちらの記事では、Pythonの基本的な構文を分かりやすく解説しています。

【2025】Pythonの構文入門!直感的なプログラミング言語の基本を学ぼう

Pythonで変数を使いこなしてスキルを高めよう

Pythonの変数は、値の扱い方や型の仕組みを理解することで、自由度の高いコードを書くことが可能です。基本的な宣言方法から複数代入、ミュータブルとイミュータブルの違い、初期化やスコープの考え方まで押さえておくと、プログラムの挙動を正確につかめるようになります。

こうした基礎を積み重ねることで、Pythonを使った開発の幅は大きく広がります。ぜひ今回の内容を活かしながら、さらにPythonスキルをさらにステップアップしていきましょう。

最新情報をチェックしよう!