Aynı fonksiyon içinde tanımladığım değişken neden UnboundLocalError veriyor?

Merhabalar;

HATA:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "GUI.py", line 92, in func
    if KONTROL:
UnboundLocalError: local variable 'KONTROL' referenced before assignment

KODLAR:

def baslatici(self):
        def func():
            for demet in self.BOLUMLER:
                for e in demet:
                    try:
                        e.pack()
                        self.aktif.append(e)
                    except TypeError:
                        KONTROL = e

                    while True:
                        if KONTROL:
                            for silinecek in self.aktif:
                                silinecek.pack_forget()
        df = th.Thread(target=func)
        df.start()

except bloğu çalışmadığı için KONTROL tanımlanmamıştır. try da da bu değişkenin tanımlanacağı bir şekilde değiştirin kodunuzu.

Böyle bir şey mümkün değil, çünkü bütün demetlerde bir bool nesnesi var. Hem öyle olsa NameError vermez miydi?

Gayet mumkun de, ben soyle sorayim:

Hic TypeError olmazsa while loop’u ne yapacak?

Benim bu mevzuya kafam taklıldı:

>>> def a():
...    n
...         
>>> a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in a
  File "<stdin>", line 3, in b
NameError: name 'n' is not defined

E orada neden UnboundLocalError hatası aldım?

Çünkü KONTROL ismindeki değişken başka bir yerde tanımlanmış. Tanımlanmamış olsa yine NameError alırdınız.

1 Beğeni