153
test1 = 0
def testFunc():
    test1 += 1
testFunc()

次のエラーが表示されます。

UnboundLocalError: 割り当て前にローカル変数 'test1' が参照されました。

エラー'test1'はローカル変数だと言っていますが、この変数はグローバルだと思いました

それで、それはグローバルまたはローカルでありtest1、引数としてグローバルを渡さずにこのエラーを解決する方法はtestFunc?

4

3 に答える 3

262

関数内で変更するには、グローバル変数としてtest1定義する必要があります。次に例を示します。test1

test1 = 0
def testFunc():
    global test1 
    test1 += 1
testFunc()

ただし、グローバル変数のみを読み取る必要がある場合はglobal、次のようにキーワードを使用せずに出力できます。

test1 = 0
def testFunc():
     print test1 
testFunc()

ただし、グローバル変数を変更する必要があるときはいつでも、キーワードを使用する必要がありますglobal

于 2012-08-10T15:43:48.800 に答える
59

global最善の解決策: sを使用しない

>>> test1 = 0
>>> def test_func(x):
        return x + 1

>>> test1 = test_func(test1)
>>> test1
1
于 2012-08-10T15:45:26.357 に答える
11

test1 がグローバルであることを指定する必要があります。

test1 = 0
def testFunc():
    global test1
    test1 += 1
testFunc()
于 2012-08-10T15:41:28.007 に答える