関数の中で定義された変数はローカル変数となり関数外では参照できない。また関数の外で定義された変数はグローバル変数となり関数内では参照はできるが書き換えができない。関数内でグローバル変数を書き換える際にはglobalによるグローバル変数宣言を行う必要がある。
1. グローバル変数とローカル変数
関数の中で定義された変数はローカル変数となり関数内では値の参照や書き換えができるが、関数外では参照も書き換えもできない。
関数testfunc内で定義された変数bを関数の外で参照する場合。定義されていないとしてエラーとなる。
def testfunc(a): b = 3 c = a*b return c print(testfunc(2), b)
実行結果
NameError: name 'b' is not defined
関数の外で定義された変数はグローバル変数となり関数内では参照はできるが書き換えができない。
関数外で定義された変数bを関数testfunc内で参照する場合。問題なく参照できる。
b = 3 def testfunc(a): c = a*b return c print(testfunc(2), b)
実行結果
6 3
関数外で定義された変数b=3を関数testfunc内でb=4に書き換えた場合。関数の戻り値は8となっており書き換えた値が使われているように見えるがbの値は3のままで書き換わっていない。関数内でbの値が変わったわけではなく新たにローカル変数bが定義されそれが関数内で用いられている。
b = 3 def testfunc(a): b = 4 c = a*b return c print(testfunc(2), b)
実行結果
6 3
2. globalによるグローバル変数宣言
グローバル変数は関数内でglobalによりグローバル変数宣言を行うことで関数内で書き換えが可能になる。
関数外で定義された変数b=3を関数testfunc内でグローバル変数宣言した上でb=4に書き換えた場合。bの値が書き換えられる。
b = 3 def testfunc(a): global b b = 4 c = a*b return c print(testfunc(2), b)
実行結果
8 4
3. リファレンス
Python チュートリアル > 4. その他の制御フローツール > 4.7. 関数を定義する
使用バージョン:Python 3.8.8
0 件のコメント:
コメントを投稿