【Python】グローバル宣言とグローバル変数

このサイトは、Pythonや生成AIなどを学べるオンラインプログラミングスクール AI Academy Bootcampが運営しています。

はじめに

下記記事の続きになります。

続き:【Python】変数のスコープを理解しよう!初学者向けにわかりやすく解説!

グローバル宣言とグローバル変数

グローバル宣言とは、関数内でグローバル変数にアクセスするための宣言です。また変数には、大きく2種類に分ける事が出来ます。

1つ目がローカル変数(関数定義の内部で定義した変数)2つ目がグローバル変数(関数定義の一番外側で定義した変数)です。サンプルプログラムを2つほど見てみましょう。

glb = 0

def func1():
    glb = 1

def func2():
    global glb
    glb = 5

print(glb) # 0が出力される
func1()
print(glb) # 0が出力される
func2()
print(glb) # 5が出力される

出力結果

0
0
5

1つ目のサンプルプログラムでは、func1関数内のglbはローカル変数です。func2関数内のglbも本来はローカル変数ですが、globalを利用しているため、1行目のglbにアクセスしています。8行目のglb = 5によって1行目に定義したglbの中身が5に上書きされています。上記のプログラムの7行目のglobal宣言をコメント化してみたサンプルプログラムも見てみましょう。

glb = 0

def func1():
    glb = 1

def func2():
    # global glb # この行をコメントアウト(コメント化)する
    glb = 5

print(glb) # 0が出力される
func1()
print(glb) # 0が出力される
func2()
print(glb) # 0が出力される

出力結果

0
0
0

上記のように7行目のglobal宣言をコメント化すると、13行目でfunc2関数を呼び出しても、14行目で出力されるglbの中身は、1行目で定義したglbですので、0が出力されたままになります。

(関数内からグローバル変数にアクセス出来ないため、変数の中身を上書きできていません) 

もう一つのサンプルを見てみましょう。

var1 = 'グローバル変数'

def sample():
    var2 = 'ローカル変数'
    return (var1, var2)

print(sample())

出力結果

('グローバル変数', 'ローカル変数')

2つ目のサンプルプログラムの例では、sample関数内5行目にて、var1を呼び出していますが、var1sample関数の外側に定義されているため、globalを用いた宣言は不要です。つまり、var1はグローバル変数(関数定義の外枠で定義した変数)ですので、globalを用いることなくアクセス出来ています。

✨LINE友だち限定:特別な「動画プラン」受講お申込み受付中!

クリスマスに未来への投資をしませんか? AI Academy Bootcamp LINE公式 では、期間限定で通常の「動画プラン」に 「生成AIコース」 を追加したスペシャルプランをご用意!さらにお得な割引クーポンもプレゼントしています!

🎁業務や学習に役立つライブラリーをプレゼント !

オンラインプログラミングスクールのAI Academy Bootcamp LINE公式のライブラリーでは無料動画、講座、最新技術資料など、学習や業務に役立つ秀逸な教材や実践的なリソースを豊富に取り揃えています!毎週新しいコンテンツも更新中です。LINE友だち登録でプレゼントします。ぜひご活用ください!

LINE Libraryで人気 の動画です。

倍速で学ぶ!生成AIを活用したプログラミング勉強法】 生成AIを活用して効率的にプログラミングを学ぶ方法を解説しています。生成AIの基本的な仕組みや効果的な活用法、注意点についても詳しく説明。勉強法とともに生成AIそのものについても学べる内容となっています。ぜひご覧ください!

AI Academy Bootcamp ではAI・データサイエンス、機械学習の実践力を高める全4コース40時間以上の動画が見放題!AIの学習に必須のPythonの学習から始まり、データサイエンス・機械学習など、目的に応じた幅広い分野をカバーしています。