Pythonの変数のスコープ
変数の宣言が無いので、ブロック外で使用されている変数があれば、
その値を書き換えてしまう。
ブロックで変数を使う時は、ブロック外で定義されているかどうか注意しないといけないのか?
ifでインデントされた処理単位を、ブロックと呼んでいいのかどうかもよくわからない。
▼名前づけと束縛 (naming and binding)
http://www.python.jp/doc/release/ref/naming.html
関数が一つのスコープ単位になるけど、
インデントによるブロックは、変数のスコープには影響しないみたい。
これは、C++と比べると、ちょっと不便かもしれない。
長い関数は作るなってことかな。
サンプル
def test(): a = 1 if True: a = 2 if True: b = 4 a = 3 print a print a print b結果は
3
3
4