Merhabalar,
Konu
İç içe iki fonksiyon ve bir tane paylaşılamayan değişken.
Olay
def disari():
# Başrol
nl_var = 2
def iceri():
# Havadan sudan şimdilik
if 8 < -2:
print("pek oluru yok gibiydi ama hayirlisi")
peki
# Ne var ne yok
if nl_var < 0:
print("negatif diyelim")
else:
print("pozitif olabilir")
iceri()
disari()
Bu kodu (ve yalnız bu kodu) çalıştırıp pozitif olabilir
çıktısı aldım, ne güzel.
Şimdi küçük bir değişiklik:
def disari():
# Başrol
nl_var = 2
def iceri():
# İçerisi biraz değişiyor
if 8 < -2:
print("pek oluru yok gibiydi ama hayirlisi")
peki
nl_var = 7 # <--- yeni geldi
# Ne var ne yok
if nl_var < 0:
print("negatif diyelim")
else:
print("pozitif olabilir")
iceri()
disari()
Bu kodu çalıştırdım ve o da ne:
Traceback (most recent call last):
File ".\fr.py", line 18, in <module>
disari()
File ".\fr.py", line 17, in disari
iceri()
File ".\fr.py", line 13, in iceri
if nl_var < 0:
UnboundLocalError: local variable 'nl_var' referenced before assignment
Ee, sorun ne?
Yahu “referanslık” bi’ durum olmadı ki, neden böyle bir hata mesajıyla karşı karşıyayız? Biraz önce de bakıyordum işaretine sorun yoktu da, şimdi ne oldu? O eklenen satırın etkisi nedir?
sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)
Windows 10
İki script de ".\fr.py"den çalıştı