2007年09月18日
Python | UnboundLocalError
octech - スコープ定義何故この最後の例がエラーになってしまうのか理解できない。参考になるのは、p.286の「変数がローカルスコープに属するかどうかはスタティックに決定される」という項目です。
(省略)
また、この参照先の処理はスタティックに処理されるので、以下のコードはエラーになります。
例えば X が 99 じゃなかったら、X=10 にしたい場合はどうすればいいの? 関数の最初に global X を加えればいいんだけど、納得がいかない。
Comment
ん?単純にif XのXってなにかわからんよ!ってエラーだと思うけど?
スコープはstaticに決まるので
1.ブロック内の変数を先に評価した時にブロック内にlocalなXがある
2.Xはlocalだという前提で関数が動く
3.実際はlocalはlocalでも後ろにあるからみつからね
4.エラーでる
って仕組みじゃないのかな?
Posted by: mopemope : 2007年09月19日 14:42
「スコープはstaticに決まる」の意味が解らなかったのだけど、
> 1.ブロック内の変数を先に評価した時にブロック内にlocalなXがある
> 2.Xはlocalだという前提で関数が動く
この説明で何となく理解できました。
thanks
Posted by: otsuka : 2007年09月19日 17:25