Kodunuza i≈ülevler eklemeye ba≈üladƒ±ƒüƒ±nƒ±zda, bir noktada bir UnboundLocalError ile kar≈üƒ±la≈ümanƒ±z ka烱nƒ±lmazdƒ±r. Bu hata, bir deƒüi≈ükeni yerel baƒülamda atanmadan √∂nce kullanmaya çalƒ±≈ütƒ±ƒüƒ±nƒ±zda ortaya 烱kar.
Bu kƒ±lavuzda, bu hatanƒ±n ne anlama geldiƒüi ve neden ortaya 烱ktƒ±ƒüƒ± hakkƒ±nda konu≈üuyoruz. Nasƒ±l ç√∂zebileceƒüinizi anlamanƒ±za yardƒ±mcƒ± olmak için bu hatanƒ±n bir √∂rneƒüini uygulamalƒ± olarak inceliyoruz.
Nedir? UnboundLocalError: atamadan önce başvurulan yerel değişken?
Yerel kapsamƒ± olmayan bir deƒüi≈ükene deƒüer atamaya çalƒ±≈ümak ≈üu hataya neden olabilir:
Python’un bir deƒüi≈ükenin kapsamƒ±nƒ± belirlemek için basit bir kuralƒ± vardƒ±r. Bir i≈ülev içinde bir deƒüi≈üken atanmƒ±≈üsa, bu deƒüi≈üken yereldir. Bunun nedeni, bir fonksiyon içinde bir deƒüi≈üken tanƒ±mladƒ±ƒüƒ±nƒ±zda, ona sadece o fonksiyonun içinden eri≈ümeniz gerektiƒüinin varsayƒ±lmasƒ±dƒ±r.
Python’da iki deƒüi≈üken kapsamƒ± vardƒ±r: yerel ve global. Global deƒüi≈ükenlere tum program boyunca eri≈üilebilir; yerel deƒüi≈ükenlere yalnƒ±zca orijinal olarak tanƒ±mlandƒ±klarƒ± i≈ülev içinde eri≈üilebilir.
Bu hatayƒ± nasƒ±l ç√∂zeceƒüimize bir g√∂z atalƒ±m.
Örnek Senaryo
Bir öğrencinin sınıfta aldığı notu hesaplayan bir program yazacağız.
İki tane ilan ederek başlıyoruz. değişkenler:
Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiklerini belirtti. Bugun bir eƒüitim kampƒ± ile e≈üle≈ütirin.
Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan az zaman harcadƒ±.
Bu deƒüi≈ükenler, sayƒ±sal ve sƒ±rasƒ±yla √∂ƒürencinin aldƒ±ƒüƒ± harf notlarƒ±. Varsayƒ±lan olarak, "letter‚" "F" dir. Ardƒ±ndan, bir "if‚" kullanarak √∂ƒürencinin harf notunu sayƒ±sal notuna g√∂re hesaplayan bir fonksiyon yazƒ±yoruz. ifade:
Son olarak fonksiyonumuzu çaƒüƒ±rƒ±yoruz:
Bu kod satırı, calculate_grade()
i≈ülevi tarafƒ±ndan konsola d√∂ndurulen deƒüeri yazdƒ±rƒ±r. Bir parametreden fonksiyonumuza geçiyoruz: sayƒ±sal. Bu, √∂ƒürencinin aldƒ±ƒüƒ± notun sayƒ±sal deƒüeridir.