2007年09月18日

Python | UnboundLocalError

octech - スコープ定義

参考になるのは、p.286の「変数がローカルスコープに属するかどうかはスタティックに決定される」という項目です。
(省略)
また、この参照先の処理はスタティックに処理されるので、以下のコードはエラーになります。

何故この最後の例がエラーになってしまうのか理解できない。

例えば X が 99 じゃなかったら、X=10 にしたい場合はどうすればいいの? 関数の最初に global X を加えればいいんだけど、納得がいかない。

Posted by otsuka : 23:22 | Comment (2) | Trackback (0)
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









名前、アドレスを登録しますか?