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

Python işlevleri ve meth

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:

UnboundLocalError: atamadan önce başvurulan yerel değişken

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 tüm 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. Bugün 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:

def hesapla_derece(grade): if notu > 80: harf = "A" elif notu > 70: harf = "B" elif notu > 60: harf = "C" elif notu > 50: letter = "D" dönüş harfi

Son olarak fonksiyonumuzu çağırıyoruz:

print(calculate_grade(numerical))

Bu kod satırı, calculate_grade() işlevi tarafından konsola döndürülen 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:

< ön>İzleme (en son çağrı): Dosya "main.py", satır 15, 'de print(calculate_grade(numerical)) Dosya "main.py", satır 13, hesap_grade dönüş harfinde UnboundLocalError: yerel değişken atamadan önce başvurulan "mektup"

Bir hata oluştu.

Çözüm

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 üzerindeki herhangi bir not için bir değer belirleyin. Bu, hesapla_grade() işlevimizi çağırdığımızda, dönüş ifademizin atıfta bulunduğumuz değeri bilmediği anlamına gelir.

< p>Yapıyoruz “harf” programımızın başında. Ancak, bunu küresel bağlamda tanımlıyoruz. Python, “dönüş mektubunu” global bir değişken değil, “letter” adlı yerel bir değişken döndürmeye çalışırken.

Bu sorunu iki şekilde çözüyoruz. İlk olarak, kodumuza bir else ifadesi ekleyebiliriz. Bu, “letter” onu geri döndürmeye çalışmadan önce:

def hesap_grade(grade): if grade > 80: harf = "A" elif notu > 70: harf = "B" elif notu > 60: harf = "C" elif notu > 50: letter = "D" else: letter = "F" return letter

Kodumuzu yeniden çalıştırmayı deneyelim:

F

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 tüm kullanım durumlarında tanımlandığını kontrol etmedik.

İşte bu! Kodumuzdaki yerel değişken hatasını düzelttik.

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!





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

Tutorials