🌐 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.