🌐 Kapsam & Modüller
Kapsam & Modüller: Scope, bir odanın görüş alanı gibi — odanın İÇİNDE bıraktığın bir not, dışarıdan görünmez; bir fonksiyon içindeki değişken de aynı şekilde dışarıdan erişilemez
Scope, bir odanın görüş alanı gibi — odanın İÇİNDE bıraktığın bir not, dışarıdan görünmez; bir fonksiyon içindeki değişken de aynı şekilde dışarıdan erişilemez. Ama tersi soru daha ilginç: dışarıdaki (global) bir değişkene fonksiyon İÇİNDEN dokunabilir misin? test_counter = 0 yazıp fonksiyon içinde test_counter += 1 dersen, Python bunu SESSİZCE yerel bir değişken sayar ve "referenced before assignment" hatası fırlatır — çünkü atama yapan her satır, Python'a "bu artık YEREL" der, sen istemesen de. Çözüm: fonksiyonun ilk satırına "global test_counter" eklemek, yani Python'a "hayır, dışarıdaki odadan bahsediyorum" demek. Java'da bu kavram bile yok — instance/static field'lar zaten açıkça tanımlıdır, Python'un bu "varsayılan yerel" davranışı bambaşka bir akıl yürütme ister.
Python LEGB kuralını kullanır: Local → Enclosing → Global → Built-in. Java'da benzer kural: yerel değişken → metod → sınıf → paket. 'global' keyword'ü ile Python'da global değişkene yazılabilir — ama bu pratikte kaçınılması gereken bir pattern.
Micro Lab: Python kod yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Adim Adim: Python kod yazma
Girdi ve veri tiplerini oku
Kritik satiri en kucuk degisiklikle tamamla
Kodu calistirip beklenen ciktiyi karsilastir
Hata varsa traceback veya assertion mesajini oku
Test raporu icin sonucu tekrar kullanilabilir hale getir
Python'da LEGB kuralında 'E' neyi temsil eder?
LEGB = Local, Enclosing, Global, Built-in. Python değişkeni bu sırayla arar. Enclosing, iç içe fonksiyonlarda dıştaki fonksiyonun kapsamını ifade eder.
Python'daki LEGB kuralına göre, bir değişken tanımlı olduğu yerel kapsama (local) sahip değilse, Python değişkeni bir sonraki aşamada nerede arar?
Python, değişkenleri LEGB sırasıyla arar: Local (Yerel), Enclosing (Kapsayan), Global ve Built-in. Yerel kapsamda bulunamayan bir değişken önce bir dış fonksiyonun kapsamında (Enclosing) aranır.