次のスクリプトは、「割り当て前に参照されたローカル変数 'var'」エラーを生成します。
def func1():
var = var + 1
var = 1
func1()
コードをどのように修正することをお勧めしますか? 関数が呼び出される前に変数がスクリプトで宣言されていると、このエラーが発生するのはなぜですか?
次のスクリプトは、「割り当て前に参照されたローカル変数 'var'」エラーを生成します。
def func1():
var = var + 1
var = 1
func1()
コードをどのように修正することをお勧めしますか? 関数が呼び出される前に変数がスクリプトで宣言されていると、このエラーが発生するのはなぜですか?
グローバル変数を変更する各関数でグローバルとして宣言することにより、他の関数でグローバル変数を使用できます。
>>> 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
関数には、メイン プログラムとは別の独自のスコープがあります。したがって、メイン プログラムで var を定義しても、func1() と func2() には認識されません。エラーを修正するには、パラメーターを両方の関数に渡し、次のように新しい値を返す必要があります。
def func1(var):
var = var + 1
return var
var = 1
var = func1(var)