一覧へ

Pythonの変数とメモリ参照

Pythonで変数が実際にどのように機能するか、メモリ参照の概念を理解します。

入門
|
6
|
検証済み (2026-07)
進捗0/18 (0%)

Pythonの変数とメモリ参照

このトピックを終えると

Pythonにおいて、変数が「値を格納する箱」ではなく、「オブジェクトを指す名前」であることを理解できるようになります。


変数は箱ではない

多くの教材が、変数を「値を格納する箱」として説明しています。しかし、Pythonにおいては、これは不正確な比喩です。

python
a = 10

このコードは、「aという箱に10を入れる」という意味ではありません。正確には、次のようになります。

  1. メモリ上に整数オブジェクト10が作成される
  2. aという名前が、そのオブジェクトを指す(参照する)
python
a = 10
b = a # `b`も同じオブジェクト`10`を指す
print(id(a)) # 4350114064
print(id(b)) # 4350114064 ← 同じアドレス!
print(a is b) # True ← 同じオブジェクトを指している

id()は、オブジェクトのメモリのアドレスを返します。ab同じアドレスを指しています。値をコピーしたのではなく、同じオブジェクトに対して別の名前を付けただけです。


再代入は、名前を別の場所に移動させること

python
a = 10
b = a
a = 20 # `a`を新しい値に関連付ける
print(a) # 20
print(b) # 10 ← `b`は依然として元のオブジェクトを指している

a = 20は、「aが指すオブジェクトを20に変更する」という意味ではありません。メモリ上に新しいオブジェクト20が作成され、aという名前がそちらに移動します。bは依然として元の10を指しています。


== vs is

python
x = [1, 2, 3]
y = [1, 2, 3]
print(x == y) # True ← 値が同じ
print(x is y) # False ← 異なるオブジェクト
python
z = x
print(x is z) # True ← 同じオブジェクトを指している
演算子比較対象意味
==内容は同じか?
isアイデンティティ同じオブジェクトか?(メモリアドレス)

「同じ内容の本が2冊」は、==ではTrue、isではFalseになります。「同じ本を2人が持っている」場合は、どちらもTrueになります。


データ型と型変換

Pythonの基本的なデータ型:

python
# 数値
integer = 42 # int (整数)
floating = 3.14 # float (浮動小数点数)
# 文字列
text = "안녕하세요" # str
# ブール値
flag = True # bool (True/False)
# None — 「値がない」ことを表す特別な型
result = None
# 型の確認
print(type(42)) # <class 'int'>
print(type("hello")) # <class 'str'>

型変換

python
# 文字列 → 数値
age = int("25") # 25
price = float("9.99") # 9.99
# 数値 → 文字列
str(42) # "42"
# 注意:変換できない場合はエラー
int("hello") # ValueError!

名前規則

python
# 良い変数名 — 意味が明確な名前
user_name = "김훈"
total_score = 95
is_active = True
# 悪い変数名
x = "김훈" # 何の値か分からない
a1 = 95 # 意味不明
# 規則
# - 英字、数字、アンダースコア(_)を使用可能
# - 数字で始めることはできない(2name → エラー)
# - snake_caseを推奨(Pythonの慣例)
# - 予約語は使用できない(if、for、classなど)

Pythonでは、camelCaseよりもsnake_caseを使用します。userNameの代わりにuser_name。これは、PEP 8(Pythonの公式スタイルガイド)の推奨事項です。


💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...