2012-05-11 13 views
-3

次のスクリプトは、「ローカル変数 『VAR』の割り当ての前に参照さ」を生成する前に、参照エラー:のPython 2.7エラー:ローカル変数が割り当て

def func1(): 
    var = var + 1 

var = 1 

func1() 

あなたはどのようにお勧めしますコードを修正するには?関数が呼び出される前に変数がスクリプトで宣言されていると、このエラーが発生するのはなぜですか?

+0

:あなたのエラーを修正するには、次のように両方の機能にパラメータを通過し、その後、そのように新しい値を返す必要があります。それはfunc1のローカルです。 varには1を加算する値がないため、var = var + 1を実行できないというエラーが表示されます。ダ・ボーイズはあなたに以下のいくつかの選択肢を与えました。 –

答えて

4

あなたはそれを修正し、各機能にグローバルとしてそれを宣言することにより、他の関数でグローバル変数を使用することができます。

>>> var = 2 
>>> def func(): 
...  global var 
...  var = var+1 
...  return var 
... 
>>> func() 
3 

OPが質問に編集した後:あなたが定義した後、あなたが変数を移動する場合 を関数に渡す必要があります。

>>> def func(var): 
...  var = var+1 
...  return var 
... 
>>> var = 2 
>>> func(var) 
3 
+0

完璧、ありがとう! – brr

0

関数には、メインプログラムとは別のスコープがあります。したがって、メインプログラムでvarを定義したとしても、func1()とfunc2()には知られていません。 func1の内部varがそれ外のものとは異なるVARあるので

def func1(var): 
    var = var + 1 
    return var 

var = 1 

var = func1(var) 
関連する問題