関数の中でグローバル変数に代入する
実は関数の中でグローバル変数に代入できない
驚愕の事実です。ふと触っていてこのことに気づきました。例えば・・・
#coding: shift-jis
a = "ABC"
def function():
print a
function()
raw_input()
出力画面:
ABC
これはいい。でも次はどうだろうか。
#coding: shift-jis
a = "ABC"
def function():
a = "DEF"
print a
function()
print a
raw_input()
出力画面:
DEF
ABC
上のようにfunction内で変数aは、代入した時点でローカル関数になる。つまり関数内での記述によって、グローバル変数の値が変わってしまうという事故はなくなるけれども、関数内でグローバル変数に代入したい場合どうしたらいいの?という話になる。
global宣言
それを解決するのがglobal宣言とかglobalステートメントと言われるもの。使い方は関数内で宣言して、これはグローバル変数だよとIron
Pythonに教えてやる。
coding: shift-jis
a = "ABC"
def function():
global a ←変数aはグローバル関数であることを教えてあげる。
a = "DEF"
print a
function()
print a
raw_input()
出力画面:
DEF
DEF
これで解決!!