【Python】globalとは?意味をわかりやすく簡単に解説

【Python】globalとは?意味をわかりやすく簡単に解説

公開: 更新:


globalとは

Pythonにおけるglobalは、関数内でグローバル変数を参照・変更するために使用されるキーワードです。通常だと関数内で定義された変数はローカルスコープに属しますが、global文を使用することでグローバルスコープの変数にアクセスできます。

global文を使用することで、関数内からグローバル変数の値を直接変更することが可能。これによりプログラム全体で共有される変数の管理が容易になりますが、過度の使用はコードの可読性や保守性を低下させる可能性があります。

global文の使用には注意が必要で、不適切な使用はバグの原因となる場合があります。グローバル変数の使用は必要最小限に抑え、代わりに引数や戻り値を使用してデータをやり取りすることがおすすめです。

「Python」を学べるコードキャンプのサービス

globalキーワードの活用方法

globalキーワードの活用方法について、以下3つを簡単に解説します。

  • 関数内でのグローバル変数の参照
  • 関数内でのグローバル変数の変更
  • グローバル変数の適切な使用場面

関数内でのグローバル変数の参照

関数内でグローバル変数を参照する場合、通常はglobal文を使用せずに直接変数名を指定するだけで参照できます。ただし同名のローカル変数が存在する場合は、ローカル変数が優先されるため注意が必要です。

counter = 0

def increment():
    print(counter)  # グローバル変数counterを参照

increment()  # 出力: 0

上記のコードはincrement関数内でグローバル変数counterを直接参照している例です。この場合global文を使用せず、グローバル変数の値を読み取ることができます。関数内で変数の値を変更しない場合はこの方法で問題ありません。

ただし同名のローカル変数が存在する場合は注意が必要です。たとえば関数内で同名の変数を定義すると、その変数がローカルスコープで優先されるため、グローバル変数を参照できなくなります。

おすすめのPython研修一覧

Python研修を提供しているおすすめの企業・法人を一覧で掲載しております。

Python研修の一覧を見る

おすすめのDX研修一覧

DX研修を提供しているおすすめの企業・法人を一覧で掲載しております。

DX研修の一覧を見る

おすすめのJava研修一覧

Java研修を提供しているおすすめの企業・法人を一覧で掲載しております。

Java研修の一覧を見る

おすすめのJavaScript研修一覧

JavaScript研修を提供しているおすすめの企業・法人を一覧で掲載しております。

JavaScript研修の一覧を見る

関数内でのグローバル変数の変更

関数内でグローバル変数の値を変更する場合は、global文を使用する必要があります。global文を使用しない場合だとPythonは新しいローカル変数を作成してしまい、グローバル変数は変更されません。

counter = 0

def increment():
    global counter
    counter += 1
    print(counter)

increment()  # 出力: 1
print(counter)  # 出力: 1

上記のコードはincrement関数内でglobal文を使用し、counterがグローバル変数であることを宣言している例です。これにより関数内でcounterの値を変更できます。global文を使用しない場合、counterは新しいローカル変数として扱われてしまうので注意田必要です。

複数のグローバル変数を同時に宣言する場合は、カンマで区切って記述できます。たとえばglobal x, y, zのように記述すると、x、y、zの3つのグローバル変数を同時に宣言できます。

グローバル変数の適切な使用場面

グローバル変数は便利ですが、過度の使用はコードの可読性や保守性を低下させる原因となります。適切な使用場面としては、プログラム全体で共有される設定値や定数の管理などが挙げられます。

MAX_ATTEMPTS = 3
current_attempts = 0

def login():
    global current_attempts
    while current_attempts < MAX_ATTEMPTS:
        # ログイン処理
        current_attempts += 1
    print("ログイン試行回数が上限に達しました")

上記のコードはMAX_ATTEMPTSをグローバル定数として定義し、current_attemptsをグローバル変数として使用している例です。これによりログイン試行回数を複数の関数で共有し、管理できます。このような場合だとグローバル変数の使用は適切といえます。

ただし可能な限りグローバル変数の使用は避け、代わりに引数や戻り値を使用してデータをやり取りすることが推奨されます。これにより関数の独立性が高まり、テストデバッグが容易になるのです。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する