• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Pythonでの変数と定数の使い方詳細

Pythonでの変数と定数の使い方詳細

1 変数の基本概念とメモリ管理
2 定数の概念と命名規則
3 実践的な変数・定数活用例
4 関連記事

変数と定数についてこの記事で詳しく解説する。プログラミング初心者がつまづきやすいメモリ管理の仕組みや、実際の開発現場で使われるベストプラクティスまで書きたい。

変数の基本概念とメモリ管理

変数とは、プログラム内で値を一時的に保持し、必要に応じて参照や変更を可能にする仕組みだ。Pythonでは、変数を宣言するだけで自動的にメモリ(RAM)上にデータが格納される。

変数の宣言と代入

Pythonの変数宣言はシンプルだ。型を明示的に指定する必要がなく、値を代入するだけで変数が作成される。

# 基本的な変数の宣言
x = 5           # 整数型の変数
y = "Hello"     # 文字列型の変数
z = 3.14        # 浮動小数点数型の変数
is_active = True # 真偽値型の変数

# 変数の値を変更
x = 10          # xの値を5から10に変更
y = "Python"    # yの値を"Hello"から"Python"に変更

print(f"x = {x}, y = {y}")  # x = 10, y = Python

Pythonのメモリ管理の仕組み

Pythonでは、変数が実際にどのようにメモリで管理されているかを理解することが重要だ。
変数はオブジェクトへの参照を保持している。

# メモリ上でのオブジェクト管理
a = 42
b = 42 # 同じ値を代入
print(id(a))    # 例: 140735567206496
print(id(b))    # 例: 140735567206496(同じID)

# 新しい値を代入すると新しいオブジェクトが作成される
a = 43
print(id(a))    # 例: 140735567206528(異なるID)

# 文字列の場合
message1 = "Python"
message2 = "Python"
print(id(message1) == id(message2))  # True(同じオブジェクトを参照)

この仕組みにより、Pythonは効率的にメモリを使用している。
同じ値を持つ変数は、可能な限り同一のオブジェクトを参照するのだ。

上の図では、Pythonのメモリ管理の状態を表現している。xに5が入れられると二つの領域がメモリ上に割り当てられる。名前空間上のxと値の5だ。xを6に変更すると名前空間上のxの位置はかわらないが、xの指し先が別の6の値が入った領域になる。

変数名には意味のある名前を付けることが重要だ。「x」や「data」のような曖昧な名前ではなく、「user_age」や「total_price」のように、その変数が何を表すかが一目で分かる名前を選ぼう。
Python講座

【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)

受講生3000人ほどの人気講座。Pythonの基礎から生成AI活用までを20時間ほどで一気に学びます。業務で活かせるPythonの基礎知識はしっかりと身につきます。

定数の概念と命名規則

定数とは変更ができない値のことだが、Pythonには言語レベルでの明示的な定数宣言機能がない。しかし、命名規則で定数として扱う変数を定義するのが一般的だ。

定数の命名規則

Pythonでは、定数は大文字とアンダースコアで命名するのが慣習だ。

# 定数の定義例
PI = 3.14159
MAX_CONNECTIONS = 100
DATABASE_URL = "postgresql://user:password@localhost/dbname"
API_KEY = "your_secret_api_key_here"
DEFAULT_TIMEOUT = 30

# 設定値として使用
def calculate_circle_area(radius):
    return PI * radius * radius

def connect_to_database():
    # DATABASE_URLを使用して接続
    print(f"データベースに接続中: {DATABASE_URL}")

定数使用時の注意点

Pythonでは技術的には定数の値を変更できてしまうため、開発チーム内での規約が重要になる。

# 定数として定義
MAX_RETRY_COUNT = 3

# 技術的には変更可能(ただし推奨されない)
MAX_RETRY_COUNT = 5  # これは避けるべき

# 適切な使用例
def send_request_with_retry(url, data):
    for attempt in range(MAX_RETRY_COUNT):
        try:
            # リクエスト処理
            response = send_request(url, data)
            return response
        except Exception as e:
            if attempt == MAX_RETRY_COUNT - 1:
                raise e
            print(f"リトライ {attempt + 1}/{MAX_RETRY_COUNT}")
実際のプロジェクトでは、定数を専用のモジュール(config.pyなど)にまとめて管理することが多い。設定値を一箇所に集約することで、メンテナンス性が大幅に向上する

変数の命名規則とベストプラクティス

Pythonでは、PEP 8(Python Enhancement Proposal 8)という公式スタイルガイドに従って変数名を付けることが推奨される。

# 良い変数名の例
user_name = "田中太郎"
total_price = 15800
is_valid_email = True
max_retry_count = 3

# 避けるべき変数名の例
# x = "田中太郎"          # 意味が不明確
# totalPrice = 15800     # キャメルケース(Pythonでは非推奨)
# validEmail = True      # キャメルケース(Pythonでは非推奨)

# 数値計算の例
item_price = 1000
tax_rate = 0.1
discount_rate = 0.05

# 計算結果をわかりやすい変数名で格納
subtotal = item_price * (1 - discount_rate)
tax_amount = subtotal * tax_rate
final_price = subtotal + tax_amount

print(f"商品価格: {item_price}円")
print(f"割引後価格: {subtotal}円")
print(f"税額: {tax_amount}円")
print(f"最終価格: {final_price}円")
Python講座

【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)

受講生3000人ほどの人気講座。Pythonの基礎から生成AI活用までを20時間ほどで一気に学びます。業務で活かせるPythonの基礎知識はしっかりと身につきます。

実践的な変数・定数活用例

実際の開発現場でよく使われるパターンを紹介しよう。設定管理と計算処理を組み合わせた実用的な例だ。

# 設定定数の定義
DEFAULT_LANGUAGE = "ja"
MAX_LOGIN_ATTEMPTS = 5
SESSION_TIMEOUT_MINUTES = 30
ERROR_MESSAGES = {
    "invalid_login": "ログイン情報が正しくありません",
    "account_locked": "アカウントがロックされました",
    "session_expired": "セッションが期限切れです"
}

# アプリケーションの状態を管理する変数
current_user = None
login_attempts = 0
session_start_time = None

def authenticate_user(username, password):
    global current_user, login_attempts, session_start_time
    
    # ログイン試行回数のチェック
    if login_attempts >= MAX_LOGIN_ATTEMPTS:
        return False, ERROR_MESSAGES["account_locked"]
    
    # 認証処理(簡略化)
    if username == "admin" and password == "secret":
        current_user = username
        login_attempts = 0  # 成功時にリセット
        session_start_time = time.time()
        return True, "ログイン成功"
    else:
        login_attempts += 1
        remaining_attempts = MAX_LOGIN_ATTEMPTS - login_attempts
        return False, f"{ERROR_MESSAGES['invalid_login']} (残り{remaining_attempts}回)"

def check_session_validity():
    import time
    
    if current_user is None:
        return False, "ログインしていません"
    
    if session_start_time is None:
        return False, "セッション情報が見つかりません"
    
    elapsed_minutes = (time.time() - session_start_time) / 60
    if elapsed_minutes > SESSION_TIMEOUT_MINUTES:
        return False, ERROR_MESSAGES["session_expired"]
    
    return True, "セッション有効"

# 使用例
print("=== ユーザー認証システム ===")
result, message = authenticate_user("admin", "wrong_password")
print(f"認証結果: {message}")

result, message = authenticate_user("admin", "secret")
print(f"認証結果: {message}")

if result:
    session_valid, session_message = check_session_validity()
    print(f"セッション状態: {session_message}")
このプログラムでは、定数を使って設定値を管理し、変数でアプリケーションの状態を追跡している。定数と変数を適切に使い分けることで、保守しやすいコードが実現できる。

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 変数の基本概念とメモリ管理
2 定数の概念と命名規則
3 実践的な変数・定数活用例
4 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Python講座
【Udemy】Python入門講座(0からPythonの基礎を体系的に学んで、生成AIでバイブコーディング)
受講生3000人ほどの人気講座。<strong>Pythonの基礎から生成AI活用</strong>...
詳細 ▶

Footer

利用規約