Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python グローバル変数にアクセスする

こんな、プログラムを書いてみた。

#!/usr/bin/env python
Mode = 0

def set_mode(new_mode):
  Mode = new_mode

def get_mode():
  return Mode

set_mode(1)
print get_mode()

実行結果は、

0

このようなコードの書き方では、各関数内の、 "Mode"はローカル変数として扱われるようだ。
グローバル変数として扱うためには、以下の様に各関数内にグローバル宣言を記述する必要がある。

#!/usr/bin/env python
Mode = 0

def set_mode(new_mode):
  global Mode
  Mode = new_mode

def get_mode():
  return Mode

set_mode(1)
print get_mode()

結果は期待通り

1

になった。
ちなみに、以下のような記述ではエラーが発生するので要注意。

def set_mode(new_mode):
  global Mode = new_mode

global Mode = new_mode
      ^
SyntaxError: invalid syntax