{"id":31017,"date":"2025-10-04T19:41:59","date_gmt":"2025-10-04T16:41:59","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31017"},"modified":"2025-10-04T19:41:59","modified_gmt":"2025-10-04T16:41:59","slug":"python-for-dongusu-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/","title":{"rendered":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Programlamada, belirli bir dizi komutu veya i\u015flemleri tekrar tekrar y\u00fcr\u00fctmek s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir gereksinimdir. Bu tekrar eden g\u00f6revleri otomatize etmek i\u00e7in d\u00f6ng\u00fcler (loops) kullan\u0131l\u0131r. Python, bu konuda olduk\u00e7a g\u00fc\u00e7l\u00fc ve okunabilir iki temel d\u00f6ng\u00fc yap\u0131s\u0131 sunar: <code>while<\/code> d\u00f6ng\u00fcs\u00fc ve <code>for<\/code> d\u00f6ng\u00fcs\u00fc. Bu makale, Python&#8217;\u0131n <code>for<\/code> d\u00f6ng\u00fcs\u00fcne odaklanarak, temel yap\u0131s\u0131ndan ileri seviye kullan\u0131m\u0131na, performans ipu\u00e7lar\u0131ndan s\u0131k yap\u0131lan hatalara kadar geni\u015f bir yelpazede kapsaml\u0131 bir rehber sunmaktad\u0131r. Python&#8217;\u0131n &#8220;okunabilirlik&#8221; felsefesinin en g\u00fczel \u00f6rneklerinden biri olan <code>for<\/code> d\u00f6ng\u00fcs\u00fc, veri yap\u0131lar\u0131 \u00fczerinde gezinmeyi ve tekrarlayan i\u015flemleri ger\u00e7ekle\u015ftirmeyi son derece kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>Giri\u015f: Python&#8217;da D\u00f6ng\u00fclerin \u00d6nemi ve for D\u00f6ng\u00fcs\u00fcn\u00fcn Rol\u00fc<\/h3>\n<p>Yaz\u0131l\u0131m geli\u015ftirmenin temel ta\u015flar\u0131ndan biri, tekrarlayan g\u00f6revleri etkin bir \u015fekilde otomatize etme yetene\u011fidir. Bir listeyi i\u015flemek, bir dosyan\u0131n her sat\u0131r\u0131n\u0131 okumak, bir veri k\u00fcmesindeki her \u00f6\u011feyi analiz etmek veya belirli bir i\u015flemi sabit say\u0131da tekrarlamak gibi senaryolar, d\u00f6ng\u00fclerin devreye girdi\u011fi yerlerdir. D\u00f6ng\u00fcler olmasayd\u0131, bu t\u00fcr g\u00f6revler i\u00e7in her bir \u00f6\u011fe veya tekrar i\u00e7in ayr\u0131 ayr\u0131 kod yazmak zorunda kal\u0131rd\u0131k ki bu, kod tekrar\u0131na yol a\u00e7an, bak\u0131m\u0131 zor ve hataya a\u00e7\u0131k bir yakla\u015f\u0131m olurdu.<\/p>\n<p>Python&#8217;da <code>for<\/code> d\u00f6ng\u00fcs\u00fc, genellikle &#8220;yinelenebilir&#8221; (iterable) nesneler \u00fczerinde gezinmek (iterate) i\u00e7in kullan\u0131l\u0131r. Bir liste, demet (tuple), dize (string), k\u00fcme (set) veya s\u00f6zl\u00fck (dictionary) gibi veri yap\u0131lar\u0131 yinelenebilir nesnelerdir. <code>for<\/code> d\u00f6ng\u00fcs\u00fc, bu nesnelerin her bir \u00f6\u011fesini s\u0131rayla ele alarak belirli bir kod blo\u011funu y\u00fcr\u00fctmenizi sa\u011flar. Python&#8217;\u0131n <code>for<\/code> d\u00f6ng\u00fcs\u00fc, di\u011fer dillerdeki C tarz\u0131 (<code>for (int i = 0; i < n; i++)<\/code>) d\u00f6ng\u00fclerden farkl\u0131 olarak, do\u011frudan bir indeks \u00fczerinden ziyade, yinelenebilir nesnenin \u00f6\u011feleri \u00fczerinde do\u011frudan gezinmeye odaklan\u0131r. Bu yakla\u015f\u0131m, kodu daha okunakl\u0131 ve sezgisel hale getirir, ayn\u0131 zamanda \"indeks d\u0131\u015f\u0131 hata\" (IndexError) gibi yayg\u0131n hatalar\u0131n \u00f6n\u00fcne ge\u00e7meye yard\u0131mc\u0131 olur. Python'\u0131n bu \u00f6zelli\u011fi, onu veri i\u015fleme ve otomasyon g\u00f6revleri i\u00e7in \u00f6zellikle g\u00fc\u00e7l\u00fc bir ara\u00e7 haline getirir.<\/p>\n<h3>for D\u00f6ng\u00fcs\u00fcn\u00fcn Temel Yap\u0131s\u0131 ve S\u00f6z Dizimi<\/h3>\n<p>Python'daki <code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fcn temel s\u00f6z dizimi olduk\u00e7a basittir ve a\u015fa\u011f\u0131daki gibidir:<\/p>\n<pre><code>for eleman in yinelenebilir_nesne:\n    # D\u00f6ng\u00fc i\u00e7inde her eleman i\u00e7in \u00e7al\u0131\u015facak kod blo\u011fu\n    # Bu sat\u0131rlar girintili olmal\u0131d\u0131r.\n    print(eleman)\n<\/code><\/pre>\n<p>Bu yap\u0131daki anahtar bile\u015fenler \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>for<\/code> anahtar kelimesi, d\u00f6ng\u00fcn\u00fcn ba\u015flang\u0131c\u0131n\u0131 belirtir.<\/li>\n<li><code>eleman<\/code>, her d\u00f6ng\u00fc iterasyonunda yinelenebilir nesnenin o anki \u00f6\u011fesini temsil eden bir de\u011fi\u015fkendir. Bu de\u011fi\u015fkenin ad\u0131 iste\u011fe ba\u011fl\u0131d\u0131r ve anlaml\u0131 bir isim se\u00e7ilmelidir (\u00f6rn. <code>sayi<\/code>, <code>harf<\/code>, <code>kisi<\/code>).<\/li>\n<li><code>in<\/code> anahtar kelimesi, <code>eleman<\/code> de\u011fi\u015fkeninin hangi <code>yinelenebilir_nesne<\/code> i\u00e7inde aranaca\u011f\u0131n\u0131 belirtir.<\/li>\n<li><code>yinelenebilir_nesne<\/code>, \u00fczerinde gezilecek olan koleksiyon veya veri yap\u0131s\u0131d\u0131r (liste, dize, demet vb.).<\/li>\n<li>\u0130ki nokta \u00fcst \u00fcste (<code>:<\/code>), d\u00f6ng\u00fc ba\u015fl\u0131\u011f\u0131n\u0131 sonland\u0131r\u0131r.<\/li>\n<li>D\u00f6ng\u00fc blo\u011fu (<code>print(eleman)<\/code> sat\u0131r\u0131), d\u00f6ng\u00fc ba\u015fl\u0131\u011f\u0131ndan sonra girintili (indent) olarak yaz\u0131lan kod sat\u0131rlar\u0131ndan olu\u015fur. Python'da girinti, kod bloklar\u0131n\u0131 tan\u0131mlamak i\u00e7in kritik \u00f6neme sahiptir. Genellikle 4 bo\u015fluk kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p>\u0130\u015fte basit bir liste \u00fczerinde gezinme \u00f6rne\u011fi:<\/p>\n<pre><code>meyveler = [\"elma\", \"muz\", \"kiraz\"]\nfor meyve in meyveler:\n    print(meyve)\n<\/code><\/pre>\n<p>Bu kod, <code>meyveler<\/code> listesindeki her bir \u00f6\u011feyi s\u0131rayla <code>meyve<\/code> de\u011fi\u015fkenine atar ve her atamada <code>print(meyve)<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131r. \u00c7\u0131kt\u0131 \u015fu \u015fekilde olacakt\u0131r:<\/p>\n<pre><code>elma\nmuz\nkiraz\n<\/code><\/pre>\n<h3>Yinelenebilir Nesneler (Iterables) Nelerdir?<\/h3>\n<p><code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fcn g\u00fcc\u00fc, \u00e7e\u015fitli yinelenebilir nesneler \u00fczerinde \u00e7al\u0131\u015fabilmesinden gelir. Bir nesne, \u00fczerinde gezilebiliyorsa (yani \u00f6\u011feleri tek tek elde edilebiliyorsa) \"yinelenebilir\" olarak adland\u0131r\u0131l\u0131r. Python'da yayg\u0131n olarak kullan\u0131lan yinelenebilir nesneler \u015funlard\u0131r:<\/p>\n<h4>1. Listeler (Lists)<\/h4>\n<p>\u00d6\u011felerin s\u0131ral\u0131 ve de\u011fi\u015ftirilebilir koleksiyonlar\u0131d\u0131r.<\/p>\n<pre><code>sayilar = [1, 2, 3, 4, 5]\nfor sayi in sayilar:\n    print(sayi * 2)\n<\/code><\/pre>\n<h4>2. Demetler (Tuples)<\/h4>\n<p>\u00d6\u011felerin s\u0131ral\u0131 ve de\u011fi\u015ftirilemez koleksiyonlar\u0131d\u0131r.<\/p>\n<pre><code>koordinatlar = (10, 20, 30)\nfor kord in koordinatlar:\n    print(f\"Koordinat: {kord}\")\n<\/code><\/pre>\n<h4>3. Dizeler (Strings)<\/h4>\n<p>Karakterlerin s\u0131ral\u0131 koleksiyonlar\u0131d\u0131r. Her karakter ayr\u0131 bir \u00f6\u011fe olarak i\u015flenir.<\/p>\n<pre><code>kelime = \"Python\"\nfor harf in kelime:\n    print(f\"Harf: {harf}\")\n<\/code><\/pre>\n<h4>4. K\u00fcmeler (Sets)<\/h4>\n<p>Benzersiz ve s\u0131ras\u0131z \u00f6\u011felerin koleksiyonlar\u0131d\u0131r.<\/p>\n<pre><code>renkler = {\"k\u0131rm\u0131z\u0131\", \"mavi\", \"ye\u015fil\"}\nfor renk in renkler:\n    print(f\"Renk: {renk}\")\n<\/code><\/pre>\n<h4>5. S\u00f6zl\u00fckler (Dictionaries)<\/h4>\n<p>Anahtar-de\u011fer \u00e7iftlerinin koleksiyonlar\u0131d\u0131r. <code>for<\/code> d\u00f6ng\u00fcs\u00fc varsay\u0131lan olarak s\u00f6zl\u00fc\u011f\u00fcn anahtarlar\u0131 \u00fczerinde gezinir.<\/p>\n<pre><code>ogrenci = {\"ad\": \"Ali\", \"yas\": 25, \"bolum\": \"Bilgisayar\"}\n\n<h2>Anahtarlar \u00fczerinde gezinme (varsay\u0131lan)<\/h2>\nfor anahtar in ogrenci:\n    print(f\"Anahtar: {anahtar}\")\n\n<h2>De\u011ferler \u00fczerinde gezinme<\/h2>\nfor deger in ogrenci.values():\n    print(f\"De\u011fer: {deger}\")\n\n<h2>Anahtar-de\u011fer \u00e7iftleri \u00fczerinde gezinme<\/h2>\nfor anahtar, deger in ogrenci.items():\n    print(f\"{anahtar}: {deger}\")\n<\/code><\/pre>\n<h4>6. <code>range()<\/code> Fonksiyonu<\/h4>\n<p>Belirli bir say\u0131 dizisi olu\u015fturmak i\u00e7in kullan\u0131l\u0131r. \u00d6zellikle belirli say\u0131da tekrar yapmak veya indekslerle \u00e7al\u0131\u015fmak gerekti\u011finde \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code>for i in range(5): # 0'dan 4'e kadar say\u0131lar \u00fcretir\n    print(i)\n<\/code><\/pre>\n<h4>7. Dosya Nesneleri<\/h4>\n<p>Bir dosyay\u0131 a\u00e7t\u0131\u011f\u0131n\u0131zda elde etti\u011finiz dosya nesnesi de yinelenebilirdir; dosyan\u0131n her sat\u0131r\u0131 \u00fczerinde gezinmenizi sa\u011flar.<\/p>\n<pre><code># Ornek bir dosya olusturalim\nwith open(\"ornek.txt\", \"w\") as f:\n    f.write(\"\u0130lk sat\u0131r\\n\")\n    f.write(\"\u0130kinci sat\u0131r\\n\")\n    f.write(\"\u00dc\u00e7\u00fcnc\u00fc sat\u0131r\\n\")\n\n<h2>Dosya uzerinde gezinme<\/h2>\nwith open(\"ornek.txt\", \"r\") as dosya:\n    for satir in dosya:\n        print(satir.strip()) # strip() ile sat\u0131r sonu bo\u015fluklar\u0131n\u0131 kald\u0131r\u0131r\u0131z\n<\/code><\/pre>\n<h4>8. \u00d6zel S\u0131n\u0131flar (Iterator Protokol\u00fc)<\/h4>\n<p>Kendi \u00f6zel s\u0131n\u0131flar\u0131n\u0131z\u0131 da yinelenebilir hale getirebilirsiniz. Bu, s\u0131n\u0131f\u0131n\u0131zda <code>__iter__()<\/code> ve <code>__next__()<\/code> metodlar\u0131n\u0131 uygulayarak yap\u0131l\u0131r. Bu konu ileri d\u00fczey bir konudur, ancak Python'\u0131n <code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fcn ne kadar esnek oldu\u011funu g\u00f6sterir.<\/p>\n<h3><code>range()<\/code> Fonksiyonu ile for D\u00f6ng\u00fcleri<\/h3>\n<p><code>range()<\/code> fonksiyonu, Python'da belirli bir say\u0131 dizisi olu\u015fturmak i\u00e7in kullan\u0131lan yerle\u015fik bir fonksiyondur. Genellikle <code>for<\/code> d\u00f6ng\u00fcleriyle birlikte, belirli say\u0131da tekrar ger\u00e7ekle\u015ftirmek veya indeks tabanl\u0131 i\u015flemleri yapmak i\u00e7in kullan\u0131l\u0131r. <code>range()<\/code> asl\u0131nda bir liste olu\u015fturmaz, bunun yerine say\u0131lar\u0131 \"talep \u00fczerine\" \u00fcreten bir yineleyici (iterator) d\u00f6nd\u00fcr\u00fcr. Bu, \u00f6zellikle \u00e7ok b\u00fcy\u00fck say\u0131 dizileriyle \u00e7al\u0131\u015f\u0131rken bellek verimlili\u011fi sa\u011flar.<\/p>\n<p><code>range()<\/code> fonksiyonunun \u00fc\u00e7 farkl\u0131 kullan\u0131m \u015fekli vard\u0131r:<\/p>\n<h4>1. <code>range(stop)<\/code><\/h4>\n<p>Tek bir arg\u00fcman verildi\u011finde, 0'dan ba\u015flay\u0131p <code>stop-1<\/code>'e kadar (<code>stop<\/code> dahil de\u011fil) say\u0131lar \u00fcretir.<\/p>\n<pre><code>print(\"range(5):\")\nfor i in range(5): # 0, 1, 2, 3, 4 \u00fcretir\n    print(i)\n<\/code><\/pre>\n<h4>2. <code>range(start, stop)<\/code><\/h4>\n<p>\u0130ki arg\u00fcman verildi\u011finde, <code>start<\/code> de\u011ferinden ba\u015flay\u0131p <code>stop-1<\/code>'e kadar (<code>stop<\/code> dahil de\u011fil) say\u0131lar \u00fcretir.<\/p>\n<pre><code>print(\"\\nrange(2, 7):\")\nfor i in range(2, 7): # 2, 3, 4, 5, 6 \u00fcretir\n    print(i)\n<\/code><\/pre>\n<h4>3. <code>range(start, stop, step)<\/code><\/h4>\n<p>\u00dc\u00e7 arg\u00fcman verildi\u011finde, <code>start<\/code> de\u011ferinden ba\u015flay\u0131p <code>stop-1<\/code>'e kadar (<code>stop<\/code> dahil de\u011fil) <code>step<\/code> kadar art\u0131rarak say\u0131lar \u00fcretir.<\/p>\n<pre><code>print(\"\\nrange(1, 10, 2):\")\nfor i in range(1, 10, 2): # 1, 3, 5, 7, 9 \u00fcretir\n    print(i)\n\nprint(\"\\nrange(10, 0, -1):\") # Geriye do\u011fru sayma\nfor i in range(10, 0, -1): # 10, 9, 8, ..., 1 \u00fcretir\n    print(i)\n<\/code><\/pre>\n<p><code>range()<\/code> fonksiyonu, belirli bir say\u0131da i\u015flemi tekrar etmek veya bir listenin \u00f6\u011felerine indeksleri arac\u0131l\u0131\u011f\u0131yla eri\u015fmek istedi\u011finizde vazge\u00e7ilmezdir. Ancak, Python'\u0131n felsefesi gere\u011fi, do\u011frudan \u00f6\u011feler \u00fczerinde gezinmek m\u00fcmk\u00fcnken indeks kullanmaktan ka\u00e7\u0131nmak genellikle daha \"Pythonik\" bir yakla\u015f\u0131md\u0131r. Yine de, bazen indekslere ihtiya\u00e7 duyulur ve <code>range()<\/code> burada devreye girer.<\/p>\n<h3><code>break<\/code> ve <code>continue<\/code> Deyimleri<\/h3>\n<p>Bazen bir d\u00f6ng\u00fc devam ederken \u00f6zel ko\u015fullarla kar\u015f\u0131la\u015fabiliriz. Bu durumlarda, d\u00f6ng\u00fcn\u00fcn ak\u0131\u015f\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in <code>break<\/code> ve <code>continue<\/code> deyimleri kullan\u0131l\u0131r.<\/p>\n<h4><code>break<\/code> Deyimi<\/h4>\n<p><code>break<\/code> deyimi, i\u00e7inde bulundu\u011fu d\u00f6ng\u00fcy\u00fc tamamen sonland\u0131r\u0131r. <code>break<\/code> ile kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131nda, d\u00f6ng\u00fcden hemen \u00e7\u0131k\u0131l\u0131r ve d\u00f6ng\u00fcden sonraki ilk kod sat\u0131r\u0131na ge\u00e7ilir.<\/p>\n<pre><code>urunler = [\"kalem\", \"defter\", \"silgi\", \"kitap\", \"cetvel\"]\naranan_urun = \"silgi\"\n\nprint(\"Aranan \u00fcr\u00fcn bulunana kadar listeleniyor:\")\nfor urun in urunler:\n    if urun == aranan_urun:\n        print(f\"'{aranan_urun}' bulundu! Aramay\u0131 durduruyoruz.\")\n        break # \u00dcr\u00fcn bulundu\u011funda d\u00f6ng\u00fcden \u00e7\u0131k\n    print(f\"\u00dcr\u00fcn: {urun}\")\n\nprint(\"D\u00f6ng\u00fc sona erdi.\")\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, \"silgi\" bulundu\u011funda d\u00f6ng\u00fc durur ve \"kitap\" ile \"cetvel\" yazd\u0131r\u0131lmaz.<\/p>\n<h4><code>continue<\/code> Deyimi<\/h4>\n<p><code>continue<\/code> deyimi, mevcut d\u00f6ng\u00fc iterasyonunu atlar ve d\u00f6ng\u00fcn\u00fcn bir sonraki iterasyonuna ge\u00e7er. <code>continue<\/code> ile kar\u015f\u0131la\u015f\u0131ld\u0131\u011f\u0131nda, d\u00f6ng\u00fc blo\u011fundaki o andan sonraki kod sat\u0131rlar\u0131 atlan\u0131r, ancak d\u00f6ng\u00fc tamamen sonland\u0131r\u0131lmaz.<\/p>\n<pre><code>sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n\nprint(\"\u00c7ift say\u0131lar atlan\u0131yor:\")\nfor sayi in sayilar:\n    if sayi % 2 == 0: # E\u011fer say\u0131 \u00e7ift ise\n        continue # Bu iterasyonu atla, bir sonraki say\u0131ya ge\u00e7\n    print(f\"Tek Say\u0131: {sayi}\")\n\nprint(\"D\u00f6ng\u00fc sona erdi.\")\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, \u00e7ift say\u0131lar i\u00e7in <code>print<\/code> komutu atlan\u0131r ve sadece tek say\u0131lar ekrana yazd\u0131r\u0131l\u0131r.<\/p>\n<h3><code>else<\/code> Blo\u011fu ile for D\u00f6ng\u00fcleri<\/h3>\n<p>Python'daki <code>for<\/code> d\u00f6ng\u00fcleri, iste\u011fe ba\u011fl\u0131 bir <code>else<\/code> blo\u011funa sahip olabilir. Bu <code>else<\/code> blo\u011fu, d\u00f6ng\u00fc normal bir \u015fekilde (yani <code>break<\/code> deyimi ile sonland\u0131r\u0131lmadan) tamamland\u0131\u011f\u0131nda y\u00fcr\u00fct\u00fcl\u00fcr. Bu \u00f6zellik, bir \u00f6\u011feyi arama gibi senaryolarda olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code>urunler = [\"kalem\", \"defter\", \"silgi\", \"kitap\"]\naranan_urun_1 = \"silgi\"\naranan_urun_2 = \"masa\"\n\n<h2>\u00d6rnek 1: \u00dcr\u00fcn bulunur ve d\u00f6ng\u00fc break ile sonland\u0131r\u0131l\u0131r<\/h2>\nprint(\"--- Arama 1 ---\")\nfor urun in urunler:\n    if urun == aranan_urun_1:\n        print(f\"'{aranan_urun_1}' bulundu.\")\n        break\nelse: # Bu blok \u00e7al\u0131\u015fmaz, \u00e7\u00fcnk\u00fc d\u00f6ng\u00fc break ile sonland\u0131\n    print(f\"'{aranan_urun_1}' listede bulunamad\u0131.\")\n\n<h2>\u00d6rnek 2: \u00dcr\u00fcn bulunamaz ve d\u00f6ng\u00fc normal \u015fekilde tamamlan\u0131r<\/h2>\nprint(\"\\n--- Arama 2 ---\")\nfor urun in urunler:\n    if urun == aranan_urun_2:\n        print(f\"'{aranan_urun_2}' bulundu.\")\n        break\nelse: # Bu blok \u00e7al\u0131\u015f\u0131r, \u00e7\u00fcnk\u00fc d\u00f6ng\u00fc normal \u015fekilde tamamland\u0131\n    print(f\"'{aranan_urun_2}' listede bulunamad\u0131.\")\n<\/code><\/pre>\n<p>\u0130lk aramada \"silgi\" bulundu\u011fu i\u00e7in <code>break<\/code> \u00e7al\u0131\u015f\u0131r ve <code>else<\/code> blo\u011fu atlan\u0131r. \u0130kinci aramada \"masa\" bulunamad\u0131\u011f\u0131 i\u00e7in d\u00f6ng\u00fc t\u00fcm \u00f6\u011feleri kontrol eder ve normal \u015fekilde tamamland\u0131\u011f\u0131nda <code>else<\/code> blo\u011fu \u00e7al\u0131\u015f\u0131r.<\/p>\n<h3>\u0130\u00e7 \u0130\u00e7e for D\u00f6ng\u00fcleri (Nested for Loops)<\/h3>\n<p>Bazen, bir d\u00f6ng\u00fcn\u00fcn her iterasyonunda ba\u015fka bir d\u00f6ng\u00fcy\u00fc \u00e7al\u0131\u015ft\u0131rmak gerekebilir. Bu duruma i\u00e7 i\u00e7e (nested) d\u00f6ng\u00fcler denir. \u0130\u00e7 i\u00e7e d\u00f6ng\u00fcler genellikle \u00e7ok boyutlu veri yap\u0131lar\u0131 (matrisler gibi) \u00fczerinde i\u015flem yaparken veya her \u00f6\u011fe kombinasyonunu kontrol etmek gerekti\u011finde kullan\u0131l\u0131r.<\/p>\n<pre><code># \u00c7arp\u0131m tablosu \u00f6rne\u011fi\nfor i in range(1, 6): # D\u0131\u015f d\u00f6ng\u00fc (1'den 5'e kadar)\n    for j in range(1, 6): # \u0130\u00e7 d\u00f6ng\u00fc (1'den 5'e kadar)\n        print(f\"{i} x {j} = {i * j}\")\n    print(\"-\" * 15) # Her d\u0131\u015f d\u00f6ng\u00fc iterasyonundan sonra ay\u0131r\u0131c\u0131\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, d\u0131\u015f d\u00f6ng\u00fc <code>i<\/code> de\u011feri i\u00e7in 1'den 5'e kadar d\u00f6nerken, her <code>i<\/code> de\u011feri i\u00e7in i\u00e7 d\u00f6ng\u00fc <code>j<\/code> de\u011feri i\u00e7in 1'den 5'e kadar d\u00f6ner. B\u00f6ylece <code>i * j<\/code> \u00e7arp\u0131mlar\u0131 hesaplan\u0131r.<\/p>\n<p>\u0130\u00e7 i\u00e7e d\u00f6ng\u00fclerin karma\u015f\u0131kl\u0131\u011f\u0131, d\u00f6ng\u00fc derinli\u011fi artt\u0131k\u00e7a \u00fcssel olarak artabilir. \u00d6rne\u011fin, iki i\u00e7 i\u00e7e d\u00f6ng\u00fc, eleman say\u0131s\u0131 N ise O(N^2) karma\u015f\u0131kl\u0131\u011fa sahip olabilir. Bu nedenle, b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken i\u00e7 i\u00e7e d\u00f6ng\u00fclerin performans etkilerini g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir.<\/p>\n<h3>for D\u00f6ng\u00fcs\u00fcn\u00fcn Geli\u015fmi\u015f Kullan\u0131mlar\u0131 ve Yard\u0131mc\u0131 Fonksiyonlar<\/h3>\n<p>Python, <code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fcn yeteneklerini art\u0131ran ve yayg\u0131n g\u00f6revleri daha zarif ve verimli hale getiren bir dizi yerle\u015fik fonksiyon ve yap\u0131 sunar.<\/p>\n<h4>1. <code>enumerate()<\/code> Fonksiyonu<\/h4>\n<p>Bir yinelenebilir nesne \u00fczerinde gezinirken hem \u00f6\u011feye hem de \u00f6\u011fenin indeksine ayn\u0131 anda ihtiya\u00e7 duydu\u011funuzda <code>enumerate()<\/code> fonksiyonu \u00e7ok kullan\u0131\u015fl\u0131d\u0131r. Bu fonksiyon, her iterasyonda bir demet (tuple) d\u00f6nd\u00fcr\u00fcr: <code>(index, value)<\/code>.<\/p>\n<pre><code>meyveler = [\"elma\", \"muz\", \"kiraz\"]\n\nfor indeks, meyve in enumerate(meyveler):\n    print(f\"{indeks}. meyve: {meyve}\")\n\n<h2>\u0130ndeksi farkl\u0131 bir say\u0131dan ba\u015flatma<\/h2>\nfor indeks, meyve in enumerate(meyveler, start=1):\n    print(f\"{indeks}. meyve: {meyve}\")\n<\/code><\/pre>\n<h4>2. <code>zip()<\/code> Fonksiyonu<\/h4>\n<p>Birden fazla yinelenebilir nesne \u00fczerinde paralel olarak gezinmek istedi\u011finizde <code>zip()<\/code> fonksiyonu kullan\u0131l\u0131r. <code>zip()<\/code>, her yinelenebilir nesneden bir \u00f6\u011feyi alarak bunlar\u0131 bir demet halinde birle\u015ftirir ve bu demetler \u00fczerinde gezinmenizi sa\u011flar. D\u00f6ng\u00fc, en k\u0131sa yinelenebilir nesne bitti\u011finde sona erer.<\/p>\n<pre><code>isimler = [\"Ali\", \"Ay\u015fe\", \"Mehmet\"]\nyaslar = [30, 24, 35]\nsehirler = [\"Ankara\", \"\u0130zmir\", \"\u0130stanbul\"]\n\nfor isim, yas, sehir in zip(isimler, yaslar, sehirler):\n    print(f\"{isim}, {yas} ya\u015f\u0131nda ve {sehir}'de ya\u015f\u0131yor.\")\n<\/code><\/pre>\n<h4>3. Liste Anlay\u0131\u015flar\u0131 (List Comprehensions)<\/h4>\n<p>Liste anlay\u0131\u015flar\u0131, mevcut bir yinelenebilir nesneden yeni bir liste olu\u015fturman\u0131n k\u0131sa, okunabilir ve genellikle daha verimli bir yoludur. Temel bir <code>for<\/code> d\u00f6ng\u00fcs\u00fcne k\u0131yasla tek bir sat\u0131rda daha karma\u015f\u0131k i\u015flemler yapabilirler.<\/p>\n<pre><code># Geleneksel for d\u00f6ng\u00fcs\u00fc ile kareler listesi olu\u015fturma\nsayilar = [1, 2, 3, 4, 5]\nkareler_for = []\nfor sayi in sayilar:\n    kareler_for.append(sayi <em><\/em> 2)\nprint(f\"For d\u00f6ng\u00fcs\u00fc ile kareler: {kareler_for}\")\n\n<h2>Liste anlay\u0131\u015f\u0131 ile kareler listesi olu\u015fturma<\/h2>\nkareler_lc = [sayi <em><\/em> 2 for sayi in sayilar]\nprint(f\"Liste anlay\u0131\u015f\u0131 ile kareler: {kareler_lc}\")\n\n<h2>Ko\u015fullu liste anlay\u0131\u015f\u0131 (sadece \u00e7ift say\u0131lar\u0131n karesi)<\/h2>\ncift_kareler_lc = [sayi <em><\/em> 2 for sayi in sayilar if sayi % 2 == 0]\nprint(f\"Ko\u015fullu liste anlay\u0131\u015f\u0131 ile \u00e7ift kareler: {cift_kareler_lc}\")\n<\/code><\/pre>\n<p>Liste anlay\u0131\u015flar\u0131, Python'da listeler \u00fczerinde d\u00f6n\u00fc\u015f\u00fcm veya filtreleme i\u015flemleri yapman\u0131n en pop\u00fcler ve Pythonik yollar\u0131ndan biridir.<\/p>\n<h4>4. S\u00f6zl\u00fck Anlay\u0131\u015flar\u0131 (Dictionary Comprehensions)<\/h4>\n<p>Liste anlay\u0131\u015flar\u0131na benzer \u015fekilde, s\u00f6zl\u00fck anlay\u0131\u015flar\u0131 da mevcut yinelenebilir nesnelerden yeni s\u00f6zl\u00fckler olu\u015fturman\u0131n k\u0131sa bir yolunu sunar.<\/p>\n<pre><code>urunler = [\"elma\", \"armut\", \"muz\"]\nfiyatlar = [10, 12, 8]\n\n<h2>\u00dcr\u00fcnleri fiyatlar\u0131yla e\u015fle\u015ftiren s\u00f6zl\u00fck<\/h2>\nurun_fiyatlari = {urun: fiyat for urun, fiyat in zip(urunler, fiyatlar)}\nprint(f\"\u00dcr\u00fcn fiyatlar\u0131: {urun_fiyatlari}\")\n\n<h2>Bir stringdeki harflerin uzunlu\u011funu g\u00f6steren s\u00f6zl\u00fck<\/h2>\nkelime = \"Merhaba\"\nharf_uzunluklari = {harf: len(kelime) for harf in kelime} # Tekrarl\u0131 harflerde sonuncusu kal\u0131r\nprint(f\"Harf uzunluklar\u0131 (basit): {harf_uzunluklari}\")\n\n<h2>Harflerin tekrar say\u0131s\u0131n\u0131 sayan daha geli\u015fmi\u015f bir \u00f6rnek<\/h2>\nfrom collections import Counter\nharf_sayilari = {harf: count for harf, count in Counter(kelime).items()}\nprint(f\"Harf say\u0131lar\u0131: {harf_sayilari}\")\n<\/code><\/pre>\n<h4>5. \u00dcrete\u00e7 \u0130fadeleri (Generator Expressions)<\/h4>\n<p>S\u00f6z dizimi olarak liste anlay\u0131\u015flar\u0131na \u00e7ok benzeyen \u00fcrete\u00e7 ifadeleri, liste yerine bir \u00fcrete\u00e7 (generator) d\u00f6nd\u00fcr\u00fcr. \u00dcrete\u00e7ler, \u00f6\u011feleri \"talep \u00fczerine\" (on-demand) \u00fcretir, yani t\u00fcm \u00f6\u011feleri belle\u011fe y\u00fcklemezler. Bu, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken bellek verimlili\u011fi a\u00e7\u0131s\u0131ndan \u00e7ok \u00f6nemlidir.<\/p>\n<pre><code>sayilar = [1, 2, 3, 4, 5]\n\n<h2>Liste anlay\u0131\u015f\u0131 (t\u00fcm kareleri belle\u011fe y\u00fckler)<\/h2>\nkareler_listesi = [sayi <em><\/em> 2 for sayi in sayilar]\nprint(f\"Kareler listesi (tip: {type(kareler_listesi)}): {kareler_listesi}\")\n\n<h2>\u00dcrete\u00e7 ifadesi (talep \u00fczerine kareleri \u00fcretir)<\/h2>\nkareler_uretici = (sayi <em><\/em> 2 for sayi in sayilar)\nprint(f\"Kareler \u00fcreteci (tip: {type(kareler_uretici)}): {kareler_uretici}\")\n\n<h2>\u00dcrete\u00e7ten \u00f6\u011feleri tek tek alma<\/h2>\nprint(\"\u00dcrete\u00e7ten \u00f6\u011feler:\")\nfor kare in kareler_uretici:\n    print(kare)\n<\/code><\/pre>\n<p>\u00dcrete\u00e7 ifadeleri, \u00f6zellikle <code>sum()<\/code>, <code>max()<\/code>, <code>min()<\/code> gibi fonksiyonlarla birlikte kullan\u0131ld\u0131\u011f\u0131nda veya b\u00fcy\u00fck veri ak\u0131\u015flar\u0131n\u0131 i\u015flerken performans\u0131 art\u0131rabilir.<\/p>\n<h3>Performans ve Optimizasyon \u0130pu\u00e7lar\u0131<\/h3>\n<p>Python'\u0131n <code>for<\/code> d\u00f6ng\u00fcs\u00fc genellikle olduk\u00e7a h\u0131zl\u0131d\u0131r, ancak b\u00fcy\u00fck veri k\u00fcmeleriyle veya yo\u011fun hesaplamalarla \u00e7al\u0131\u015f\u0131rken performans\u0131 art\u0131rmak i\u00e7in baz\u0131 noktalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak faydal\u0131 olabilir:<\/p>\n<ol>\n<li><strong>Yerle\u015fik Fonksiyonlar\u0131 Kullan\u0131n:<\/strong> M\u00fcmk\u00fcn oldu\u011funca <code>sum()<\/code>, <code>min()<\/code>, <code>max()<\/code>, <code>map()<\/code>, <code>filter()<\/code> gibi Python'\u0131n optimize edilmi\u015f yerle\u015fik fonksiyonlar\u0131n\u0131 kullanmaya \u00e7al\u0131\u015f\u0131n. Bu fonksiyonlar genellikle e\u015fde\u011fer <code>for<\/code> d\u00f6ng\u00fclerinden daha h\u0131zl\u0131d\u0131r, \u00e7\u00fcnk\u00fc C dilinde uygulanm\u0131\u015flard\u0131r.<\/li>\n<li><strong>Liste Anlay\u0131\u015flar\u0131 ve \u00dcrete\u00e7 \u0130fadeleri:<\/strong> Yeni listeler veya yinelenebilirler olu\u015fturmak i\u00e7in liste anlay\u0131\u015flar\u0131 ve \u00fcrete\u00e7 ifadeleri, genellikle geleneksel <code>for<\/code> d\u00f6ng\u00fclerinden daha performansl\u0131d\u0131r. Liste anlay\u0131\u015flar\u0131, d\u00f6ng\u00fc ve <code>append()<\/code> \u00e7a\u011fr\u0131lar\u0131n\u0131n birle\u015fmesinden daha h\u0131zl\u0131 olabilirken, \u00fcrete\u00e7 ifadeleri bellek verimlili\u011fi sa\u011flar.<\/li>\n<li><strong>Gereksiz Hesaplamalardan Ka\u00e7\u0131n\u0131n:<\/strong> D\u00f6ng\u00fc i\u00e7inde tekrar tekrar ayn\u0131 hesaplamay\u0131 yapmaktan ka\u00e7\u0131n\u0131n. E\u011fer bir de\u011fer d\u00f6ng\u00fcden \u00f6nce hesaplanabiliyorsa, onu d\u00f6ng\u00fcden \u00f6nce hesaplay\u0131n.<\/li>\n<li><strong>Mod\u00fcl \u0130\u00e7e Aktar\u0131mlar\u0131n\u0131 D\u00f6ng\u00fc D\u0131\u015f\u0131nda Tutun:<\/strong> E\u011fer bir mod\u00fcl veya fonksiyonu d\u00f6ng\u00fc i\u00e7inde tekrar tekrar i\u00e7e aktar\u0131yorsan\u0131z, bunu d\u00f6ng\u00fc d\u0131\u015f\u0131na ta\u015f\u0131y\u0131n.<\/li>\n<li><strong><code>itertools<\/code> Mod\u00fcl\u00fc:<\/strong> Python'\u0131n <code>itertools<\/code> mod\u00fcl\u00fc, d\u00f6ng\u00fclerle ilgili karma\u015f\u0131k ve verimli i\u015flemler i\u00e7in bir\u00e7ok \u00f6zel yineleyici sunar (\u00f6rn. <code>itertools.chain()<\/code>, <code>itertools.cycle()<\/code>, <code>itertools.combinations()<\/code>). Bu mod\u00fcl, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleri \u00fczerinde geli\u015fmi\u015f yineleme desenleri uygulaman\u0131z gerekti\u011finde \u00e7ok g\u00fc\u00e7l\u00fcd\u00fcr.<\/li>\n<li><strong>D\u00f6ng\u00fc \u0130\u00e7inde Fonksiyon \u00c7a\u011fr\u0131s\u0131 Say\u0131s\u0131n\u0131 Azalt\u0131n:<\/strong> E\u011fer bir fonksiyonu d\u00f6ng\u00fcn\u00fcn her iterasyonunda \u00e7a\u011f\u0131r\u0131yorsan\u0131z ve bu fonksiyon pahal\u0131 bir i\u015flem yap\u0131yorsa, m\u00fcmk\u00fcnse fonksiyon \u00e7a\u011fr\u0131s\u0131 say\u0131s\u0131n\u0131 azaltmaya \u00e7al\u0131\u015f\u0131n.<\/li>\n<\/ol>\n<h3>S\u0131k Yap\u0131lan Hatalar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p><code>for<\/code> d\u00f6ng\u00fclerini kullan\u0131rken s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan baz\u0131 hatalar ve bunlardan ka\u00e7\u0131nma yollar\u0131:<\/p>\n<h4>1. Girinti Hatalar\u0131 (<code>IndentationError<\/code>)<\/h4>\n<p>Python'da kod bloklar\u0131 (d\u00f6ng\u00fcler, ko\u015fullu ifadeler, fonksiyonlar vb.) girintilerle tan\u0131mlan\u0131r. Yanl\u0131\u015f veya tutars\u0131z girinti, <code>IndentationError<\/code> hatas\u0131na yol a\u00e7ar.<\/p>\n<pre><code># Hatal\u0131\nfor i in range(3):\nprint(i) # IndentationError: expected an indented block\n\n<h2>Do\u011fru<\/h2>\nfor i in range(3):\n    print(i)\n<\/code><\/pre>\n<h4>2. D\u00f6ng\u00fc \u0130\u00e7inde Yinelenebilir Nesneyi De\u011fi\u015ftirme<\/h4>\n<p>Bir liste veya ba\u015fka bir koleksiyon \u00fczerinde gezinirken ayn\u0131 koleksiyonu d\u00f6ng\u00fc i\u00e7inde de\u011fi\u015ftirmek (\u00f6\u011fe eklemek, \u00e7\u0131karmak) beklenmedik sonu\u00e7lara veya hatalara yol a\u00e7abilir. Genellikle, de\u011fi\u015ftirilmi\u015f bir kopya \u00fczerinde \u00e7al\u0131\u015fmak veya yeni bir liste olu\u015fturmak daha g\u00fcvenlidir.<\/p>\n<pre><code>sayilar = [1, 2, 3, 4]\n<h2>Hatal\u0131 yakla\u015f\u0131m:<\/h2>\n<h2>for sayi in sayilar:<\/h2>\n<h2>if sayi % 2 == 0:<\/h2>\n<h2>sayilar.remove(sayi) # Bu, d\u00f6ng\u00fcy\u00fc bozabilir ve baz\u0131 \u00f6\u011feleri atlayabilir<\/h2>\n\n<h2>Do\u011fru yakla\u015f\u0131m: Yeni bir liste olu\u015fturmak<\/h2>\nyeni_sayilar = [sayi for sayi in sayilar if sayi % 2 != 0]\nprint(yeni_sayilar) # [1, 3]\n\n<h2>Veya bir kopyas\u0131 \u00fczerinde gezinmek<\/h2>\n<h2>for sayi in list(sayilar): # list() ile bir kopya olu\u015fturulur<\/h2>\n<h2>if sayi % 2 == 0:<\/h2>\n<h2>sayilar.remove(sayi)<\/h2>\n<h2>print(sayilar)<\/h2>\n<\/code><\/pre>\n<h4>3. D\u00f6ng\u00fc De\u011fi\u015fkeninin Kapsam\u0131 (Loop Variable Leakage)<\/h4>\n<p>Python'da, <code>for<\/code> d\u00f6ng\u00fcs\u00fcnde kullan\u0131lan d\u00f6ng\u00fc de\u011fi\u015fkeni (\u00f6rn. <code>for item in my_list:<\/code> i\u00e7indeki <code>item<\/code>), d\u00f6ng\u00fc sona erdikten sonra bile eri\u015filebilir kal\u0131r ve d\u00f6ng\u00fcn\u00fcn son iterasyonundaki de\u011ferini korur. Bu bazen beklenmedik davran\u0131\u015flara yol a\u00e7abilir, \u00f6zellikle fonksiyonlar i\u00e7inde closure'lar ile \u00e7al\u0131\u015f\u0131rken.<\/p>\n<pre><code>for i in range(3):\n    pass # Sadece d\u00f6ng\u00fcy\u00fc \u00e7al\u0131\u015ft\u0131r\n\nprint(f\"D\u00f6ng\u00fc bittikten sonra i'nin de\u011feri: {i}\") # \u00c7\u0131kt\u0131: 2\n<\/code><\/pre>\n<p>Bu bir hata olmasa da, bu davran\u0131\u015f\u0131n fark\u0131nda olmak \u00f6nemlidir.<\/p>\n<h4>4. Yanl\u0131\u015f <code>range()<\/code> Kullan\u0131m\u0131<\/h4>\n<p><code>range()<\/code> fonksiyonunun <code>start<\/code>, <code>stop<\/code> ve <code>step<\/code> arg\u00fcmanlar\u0131n\u0131 kar\u0131\u015ft\u0131rmak veya yanl\u0131\u015f anlamak, istenmeyen say\u0131 dizileri \u00fcretilmesine neden olabilir.<\/p>\n<pre><code># Hatal\u0131: 1'den 5'e kadar (5 dahil) say\u0131lar istiyoruz ama range(1, 5) sadece 1,2,3,4 verir\n<h2>for i in range(1, 5):<\/h2>\n<h2>print(i) # 1, 2, 3, 4<\/h2>\n\n<h2>Do\u011fru: 5'i dahil etmek i\u00e7in stop de\u011ferini 6 yapmal\u0131y\u0131z<\/h2>\nfor i in range(1, 6):\n    print(i) # 1, 2, 3, 4, 5\n<\/code><\/pre>\n<h3>Sonu\u00e7<\/h3>\n<p>Python'\u0131n <code>for<\/code> d\u00f6ng\u00fcs\u00fc, dilin en temel ve g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biridir. Yinelenebilir nesneler \u00fczerinde kolayca gezinme yetene\u011fi, <code>range()<\/code>, <code>enumerate()<\/code>, <code>zip()<\/code> gibi yard\u0131mc\u0131 fonksiyonlarla zenginle\u015ftirilmi\u015f kullan\u0131m\u0131 ve liste\/s\u00f6zl\u00fck anlay\u0131\u015flar\u0131 gibi modern Pythonik yap\u0131larla birle\u015fti\u011finde, veri i\u015fleme ve otomasyon g\u00f6revleri i\u00e7in inan\u0131lmaz derecede esnek ve verimli bir ara\u00e7 haline gelir.<\/p>\n<p>Bu makalede, <code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fcn temel s\u00f6z diziminden ba\u015flayarak, farkl\u0131 yinelenebilir nesneler \u00fczerindeki kullan\u0131m\u0131na, <code>break<\/code>, <code>continue<\/code> ve <code>else<\/code> gibi kontrol ak\u0131\u015f\u0131 deyimlerine, i\u00e7 i\u00e7e d\u00f6ng\u00fclere ve <code>enumerate()<\/code>, <code>zip()<\/code>, liste anlay\u0131\u015flar\u0131 gibi geli\u015fmi\u015f \u00f6zelliklere kadar geni\u015f bir yelpazeyi ele ald\u0131k. Ayr\u0131ca, performans ipu\u00e7lar\u0131 ve s\u0131k yap\u0131lan hatalar \u00fczerinde durarak, daha sa\u011flam ve verimli Python kodlar\u0131 yazman\u0131za yard\u0131mc\u0131 olmay\u0131 ama\u00e7lad\u0131k.<\/p>\n<p>Python programlamada yetkinle\u015fmek i\u00e7in <code>for<\/code> d\u00f6ng\u00fcs\u00fcn\u00fc ve onunla ili\u015fkili kavramlar\u0131 derinlemesine anlamak kritik \u00f6neme sahiptir. Bu rehberin, Python yolculu\u011funuzda size sa\u011flam bir temel sunmas\u0131n\u0131 umuyoruz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber\nProgramlamada, belirli bir dizi komutu veya i\u015flemleri tekrar tekrar y\u00fcr\u00fctmek s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-31017","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber Programlamada, belirli bir dizi komutu veya i\u015flemleri tekrar tekrar y\u00fcr\u00fctmek s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-04T16:41:59+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-10-04T16:41:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/\"},\"wordCount\":2393,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/\",\"name\":\"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-04T16:41:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber","og_description":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber Programlamada, belirli bir dizi komutu veya i\u015flemleri tekrar tekrar y\u00fcr\u00fctmek s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan","og_url":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-04T16:41:59+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber","datePublished":"2025-10-04T16:41:59+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/"},"wordCount":2393,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/","name":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-04T16:41:59+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/python-for-dongusu-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python for D\u00f6ng\u00fcs\u00fc: Kapsaml\u0131 Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31017"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31017\/revisions"}],"predecessor-version":[{"id":31018,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31017\/revisions\/31018"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}