-2

次のスクリプトは、「割り当て前に参照されたローカル変数 'var'」エラーを生成します。

def func1():
    var = var + 1

var = 1

func1()

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

4

2 に答える 2

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
于 2012-05-11T11:19:51.910 に答える
0

関数には、メイン プログラムとは別の独自のスコープがあります。したがって、メイン プログラムで var を定義しても、func1() と func2() には認識されません。エラーを修正するには、パラメーターを両方の関数に渡し、次のように新しい値を返す必要があります。

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

var = 1

var = func1(var)
于 2012-05-11T11:20:45.610 に答える