Python2で競技プログラミングする時に知っておきたいtipsの,その他の言語仕様についての部分を分割しました.
Pythonのバージョンは2.7.5(Python3では,入出力などの仕様が大きく異なるので,他の記事を参照することをおすすめします).
グローバル変数
Python bite: グローバル変数へのアクセス | Inside ASCADE
全探索を書く際などにグローバル変数を用いることがあるが,Pythonでは,関数内からグローバル変数にアクセスする際に注意する点がある.
# 関数内に変数の参照しかない場合
a = 'abc'
def function():
print a
function() # 'abc'
# 関数内での変数への再代入を含む場合
a = 'abc'
def function():
a = 'def'
print a
function() # def
print a # abc
上の例のように,関数内からグローバル変数を参照することはできるが,その関数内で同名のローカル変数に代入を行うと,その関数内ではローカルスコープとして扱われてしまう.
このため,そのままでは関数内でグローバル変数の値を変更することはできない.
a = 'abc'
def function():
global a
a = 'def'
print a
function() # def
print a # def
global a
によって,変数aがグローバル変数であることを宣言することにより,関数内でグローバル変数の書き換えができる.