Pertanyaan Variabel lokal (?) Yang direferensikan sebelum tugas [duplikat]


Kemungkinan Duplikat:
var lokal yang direferensikan sebelum tugas
Python 3: UnboundLocalError: variabel lokal direferensikan sebelum tugas 

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

Saya menerima kesalahan berikut:

UnboundLocalError: variabel lokal 'test1' direferensikan sebelum tugas.

Kesalahan mengatakan itu 'test1' adalah variabel lokal tetapi saya berpikir bahwa variabel ini bersifat global

Jadi apakah itu global atau lokal dan bagaimana memecahkan kesalahan ini tanpa melewati global test1 sebagai argumen untuk testFunc?


75
2017-08-10 15:39


asal


Jawaban:


Agar Anda memodifikasi test1 sementara di dalam fungsi Anda perlu melakukan mendefinisikan test1 sebagai variabel global, misalnya:

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

Namun, jika Anda hanya perlu membaca variabel global, Anda dapat mencetaknya tanpa menggunakan kata kunci global, seperti:

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

Tetapi setiap kali Anda perlu memodifikasi variabel global, Anda harus menggunakan kata kunci global.


136
2017-08-10 15:43



Solusi terbaik: Jangan gunakan globals

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

>>> test1 = test_func(test1)
>>> test1
1

35
2017-08-10 15:45



Anda harus menentukan bahwa test1 bersifat global:

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

7
2017-08-10 15:41