Edited at

Python2で競技プログラミングする時に知っておきたいtips(その他の言語仕様編)

More than 1 year has passed since last update.

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がグローバル変数であることを宣言することにより,関数内でグローバル変数の書き換えができる.