Python’da iç içe döngüler ve fonksiyonlar, karmaşık işlemleri gerçekleştirmek ve kodun modülerliğini artırmak için kullanılır. İç içe döngüler, bir döngünün içinde başka bir döngü çalıştırmayı sağlar. İç içe fonksiyonlar ise, bir fonksiyonun içinde başka bir fonksiyon tanımlamayı ve kullanmayı mümkün kılar.
1. İç İçe Döngüler
İç içe döngüler, bir döngü yapısının içinde başka bir döngü çalıştırmak anlamına gelir. Bu, özellikle iki boyutlu veri yapıları (örneğin matrisler, tablolar) üzerinde işlem yapmak için kullanışlıdır.
a. İç İçe for
Döngüleri
İç içe for
döngüleri, genellikle iki boyutlu listeler veya matrisler üzerinde iterasyon yapmak için kullanılır.
Örnek: 2×3 Matrisin Elemanlarını Yazdırma
matris = [
[1, 2, 3],
[4, 5, 6]
]
for satir in matris:
for eleman in satir:
print(eleman, end=" ")
print() # Her satırdan sonra yeni bir satıra geçmek için
Çıktı:
1 2 3
4 5 6
Bu örnekte, dış döngü her satırda iterasyon yaparken, iç döngü bu satırdaki elemanlar üzerinde iterasyon yapar.
b. İç İçe while
Döngüleri
İç içe while
döngüleri, belirli bir koşul doğru olduğu sürece iç içe döngüleri çalıştırır.
Örnek: Bir Üçgen Deseni Oluşturma
n = 5
i = 1
while i <= n:
j = 1
while j <= i:
print("*", end="")
j += 1
print()
i += 1
Çıktı:
*
**
***
****
*****
Bu örnekte, dış döngü her satırı temsil ederken, iç döngü o satırda kaç tane yıldız (*) yazdırılacağını kontrol eder.
2. İç İçe Fonksiyonlar
İç içe fonksiyonlar, bir fonksiyonun içinde başka bir fonksiyon tanımlama işlemidir. Bu, genellikle bir fonksiyonun kapsama alanını sınırlamak veya kapanış (closure) oluşturmak için kullanılır.
a. Temel İç İçe Fonksiyon Tanımlama
İç içe fonksiyonlar, dış fonksiyonun bir parçası olarak tanımlanır ve genellikle dış fonksiyonun içinde çağrılır.
Örnek: İç İçe Fonksiyon Kullanımı
def dis_fonksiyon():
print("Dış fonksiyon çalıştı.")
def ic_fonksiyon():
print("İç fonksiyon çalıştı.")
ic_fonksiyon()
dis_fonksiyon()
Çıktı:
Dış fonksiyon çalıştı.
İç fonksiyon çalıştı.
Bu örnekte, ic_fonksiyon
sadece dis_fonksiyon
içinde tanımlanır ve dış fonksiyon çalıştığında çağrılır.
b. Kapanışlar (Closures)
Kapanışlar, bir iç fonksiyonun, dış fonksiyonun kapsamındaki değişkenlere erişimi olduğu ve bu erişimin dış fonksiyon sona erdikten sonra da sürdüğü durumlardır.
Örnek: Kapanış Oluşturma
def dis_fonksiyon(sayi):
def ic_fonksiyon():
return sayi ** 2
return ic_fonksiyon
kare_fonksiyonu = dis_fonksiyon(4)
print(kare_fonksiyonu()) # 16 yazdırır
Bu örnekte, ic_fonksiyon
, dis_fonksiyon
tarafından döndürülür ve sayi
değişkenine hala erişim sağlar.
c. İç İçe Fonksiyonlarla Durum Yönetimi
İç içe fonksiyonlar, özellikle belirli bir durumu yönetmek için faydalıdır. Dış fonksiyon, durumu tanımlar ve iç fonksiyonlar bu durumu kullanır.
Örnek: Fonksiyon Sayacı
def sayici():
sayi = 0
def artir():
nonlocal sayi
sayi += 1
return sayi
return artir
say = sayici()
print(say()) # 1
print(say()) # 2
print(say()) # 3
Bu örnekte, sayici
fonksiyonu bir sayaç oluşturur ve bu sayaç her çağrıldığında 1 artırılır. nonlocal
anahtar kelimesi, iç fonksiyonun dış fonksiyonun yerel değişkenine erişimini sağlar.
İç içe döngüler ve fonksiyonlar, Python’da daha karmaşık veri işleme ve fonksiyonel yapıların oluşturulmasına olanak tanır. İç içe döngüler, çok boyutlu veri yapıları üzerinde işlem yapmak için kullanılırken, iç içe fonksiyonlar, kapsama alanını yönetmek ve kapanışlar oluşturmak için kullanılır. Bu yapıların doğru bir şekilde kullanılması, kodunuzu daha modüler, okunabilir ve sürdürülebilir hale getirir.
Bir yanıt yazın