atamadan önce başvurulan Python yerel değişken

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.

Kodumuzu çalƒ±≈ütƒ±ralƒ±m ve ne olduƒüunu g√∂relim:

Bir hata oluştu.

Çözum

Kodumuz biz onu atamadan √∂nce "letter‚"a ba≈üvurduƒüumuz için bir hata veriyor.

"numerical‚" deƒüerini 42 olarak ayarladƒ±k. if deyimimiz 50’nin uzerindeki herhangi bir not için bir deƒüer belirleyin. Bu, hesapla_grade() i≈ülevimizi çaƒüƒ±rdƒ±ƒüƒ±mƒ±zda, d√∂nu≈ü ifademizin atƒ±fta bulunduƒüumuz deƒüeri bilmediƒüi anlamƒ±na gelir.

< p>Yapƒ±yoruz "harf‚" programƒ±mƒ±zƒ±n ba≈üƒ±nda. Ancak, bunu kuresel baƒülamda tanƒ±mlƒ±yoruz. Python, "d√∂nu≈ü mektubunu‚" global bir deƒüi≈üken deƒüil, "letter‚" adlƒ± yerel bir deƒüi≈üken d√∂ndurmeye çalƒ±≈üƒ±rken.

Bu sorunu iki ≈üekilde ç√∂zuyoruz. ƒ∞lk olarak, kodumuza bir else ifadesi ekleyebiliriz. Bu, "letter‚" onu geri d√∂ndurmeye çalƒ±≈ümadan √∂nce:

Kodumuzu yeniden çalƒ±≈ütƒ±rmayƒ± deneyelim:

Kodumuz öğrencinin notunu başarıyla yazdırır.

Eƒüer "if‚" bir deƒüi≈üken bildirdiƒüinizde, bir "else‚" ifadesi yerinde. Bu, if ifadelerinizin hiçbiri True olarak deƒüerlendirilmese bile, çalƒ±≈üacaƒüƒ±nƒ±z deƒüi≈üken için yine de bir deƒüer ayarlayabilmenizi saƒülayacaktƒ±r.

Alternatif olarak, "global‚" global anahtar kelimemizi yerel baƒülamda calculate_grade() fonksiyonumuzda kullanƒ±labilir hale getirmek için anahtar kelime. Ancak, bu yakla≈üƒ±mƒ±n daha kafa karƒ±≈ütƒ±rƒ±cƒ± kodlara ve diƒüer sorunlara yol açmasƒ± muhtemeldir. Genel olarak, deƒüi≈ükenler "global‚" kesinlikle gerekli olmadƒ±kça. ƒ∞lk ve ana baƒülantƒ± noktanƒ±z her zaman bir deƒüi≈ükenin doƒüru tanƒ±mlandƒ±ƒüƒ±ndan emin olmak olmalƒ±dƒ±r.

√ñrneƒüin yukarƒ±daki √∂rnekte, "letter‚" deƒüi≈ükeninin tum kullanƒ±m durumlarƒ±nda tanƒ±mlandƒ±ƒüƒ±nƒ± kontrol etmedik.

İşte bu! Kodumuzdaki yerel değişken hatasını duzelttik.

Sonuç

UnboundLocalError: atamadan √∂nce ba≈üvurulan yerel deƒüi≈üken hatasƒ±, bir atama yapmaya çalƒ±≈ütƒ±ƒüƒ±nƒ±zda ortaya 烱kƒ±yor. yerel bir deƒüi≈ükene bir deƒüer atamadan √∂nce deƒüer. Bu hatayƒ±, bir deƒüer atamadan √∂nce yerel bir deƒüi≈ükenin bildirilmesini saƒülayarak ç√∂zebilirsiniz.

Artƒ±k UnboundLocalError Python’u ç√∂zmeye hazƒ±rsƒ±nƒ±z. profesyonel geli≈ütirici gibi hatalar!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method