Döngülerde else

Gbmdpof

Kıdemli Üye
23 Eyl 2016
2,001
11
Merhaba. Dün bir yazıyı okurken karşıma for-else kullanımı geldi. İlk başta daha önce hiç görmediğim için bunun bir hata olduğunu, if-else yazılmak istendiğini düşündüm ama sonrasında böyle bir kullanımın da olduğunu anladım. Sonrasında da çok kullanılmadığı için çoğu kişinin bilmediğini düşündüğüm için bu konuyu açmaya karar verdim. Ayrıca bu kullanımın varlığını bilen kişiler için bile kafa karıştırıcı olabilir, bu yüzden bilen kişilere de faydalı olabilir.

Bu kullanım genelde if koşullarındaki else kullanımı ile karıştırılıyor. Farklarını bir örnek ile açıklayalım:


Kod:
[COLOR=#177702]In [[B][COLOR=#52FD55]1[/COLOR][/B]]: [B]if[/B] [B]True[/B][COLOR="White"]:[/COLOR]
   ...:     print[COLOR="white"]([/COLOR][COLOR="Sienna"]'1'[/COLOR][COLOR="white"])[/COLOR]
   ...: [B]else[/B][COLOR="white"]:[/COLOR]
   ...:     print[COLOR="white"]([/COLOR][COLOR="sienna"]'0'[/COLOR][COLOR="white"])[/COLOR]

[COLOR="white"]1[/COLOR]

In [[B][COLOR=#52FD55]2[/COLOR][/B]]: [B]for[/B] [COLOR="White"]i[/COLOR] [B][COLOR="Magenta"]in[/COLOR][/B] [1][COLOR="white"]:[/COLOR]
   ...:     print[COLOR="white"]([/COLOR][COLOR="white"]i[/COLOR][COLOR="white"])[/COLOR]
   ...: [B]else[/B][COLOR="white"]:[/COLOR]
   ...:     print[COLOR="white"]([/COLOR][COLOR="sienna"]'Done!'[/COLOR][COLOR="white"])[/COLOR]

[COLOR="White"]1
Done![/COLOR][/COLOR]

Evet, görebileceğiniz gibi iki else de aynı gibi gözüküyor. Bu yüzden insanların iki durumda da else'in atlanmasını beklemesi oldukça normal fakat örnekte de görüldüğü gibi bu yanlış. Döngülerde else kullandığımızda, yapılan iş bittikten sonra çalıştırılacak kodu ifade ediyoruz.

Bunun aynısını while döngüsünde de kullanabiliriz. Yine döngü sonunda else içinde yazılan kod çalıştırılacakır.

Hata Yakalarken else

Hata yakalarken de işimiz bittiğinde yapacağımız işlem için else kullanabiliyoruz fakat finally varken neden else? Çünkü else, sadece hiçbir hata olmazsa çalışıyor. finally ise ne olursa olsun çalışıyor.


Yararlanılan Kaynaklar:
docs.python.org
python-notes.curiousefficiency.org
stackoverflow.com​
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.