はじめに
下記記事の続きになります。
続き:【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
を呼び出していますが、var1
はsample
関数の外側に定義されているため、global
を用いた宣言は不要です。つまり、var1
はグローバル変数(関数定義の外枠で定義した変数)ですので、global
を用いることなくアクセス出来ています。
Pythonを効率よく学ぶには?
Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。