{"id":31958,"date":"2025-10-16T02:31:23","date_gmt":"2025-10-15T23:31:23","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/"},"modified":"2025-10-16T02:31:23","modified_gmt":"2025-10-15T23:31:23","slug":"pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/","title":{"rendered":"Python&#8217;da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)"},"content":{"rendered":"<p>Python&#8217;da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak kritik \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada <strong>Python tuple<\/strong> (demet) devreye girer. Peki, <strong>Python&#8217;da tuple nedir<\/strong>, listelerden fark\u0131 nelerdir ve hangi senaryolarda kullanmak daha avantajl\u0131d\u0131r? Bu makalede, tuple&#8217;lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131n\u0131, performans faydalar\u0131n\u0131, ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulamalar\u0131n\u0131 ve Python programlama becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ipu\u00e7lar\u0131n\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken kodunuzu daha verimli hale getirmek i\u00e7in tuple&#8217;lar\u0131 detayl\u0131ca \u00f6\u011frenmeye haz\u0131r m\u0131s\u0131n\u0131z?<\/p>\n<p>Python&#8217;da veri y\u00f6netimi, programlaman\u0131n temel ta\u015flar\u0131ndan biridir. Genellikle, birden fazla \u00f6\u011feyi tek bir yap\u0131 i\u00e7inde saklamak istedi\u011fimizde listeleri kullan\u0131r\u0131z. Ancak, baz\u0131 durumlar vard\u0131r ki, bir veri koleksiyonunun olu\u015fturulduktan sonra asla de\u011fi\u015ftirilmemesi, yani sabit kalmas\u0131 istenir. \u00d6rne\u011fin, bir veritaban\u0131ndan \u00e7ekilen kullan\u0131c\u0131 kimlik bilgileri, bir fonksiyonun d\u00f6nd\u00fcrd\u00fc\u011f\u00fc sabit koordinat de\u011ferleri veya yap\u0131land\u0131rma ayarlar\u0131 gibi bilgilerin istem d\u0131\u015f\u0131 bir \u015fekilde de\u011fi\u015ftirilmesi b\u00fcy\u00fck sorunlara yol a\u00e7abilir. \u0130\u015fte tam bu noktada <strong>Python tuple<\/strong>, yani demet, kendisini g\u00f6sterir. Tuple&#8217;lar, Python&#8217;daki temel veri yap\u0131lar\u0131ndan biridir ve listelere benzer \u015fekilde birden fazla \u00f6\u011feyi s\u0131ral\u0131 bir \u015fekilde depolayabilirler. Ancak tuple&#8217;lar\u0131 listelerden ay\u0131ran en \u00f6nemli \u00f6zellik, onlar\u0131n &#8220;de\u011fi\u015fmez&#8221; (immutable) olmalar\u0131d\u0131r.<\/p>\n<p>De\u011fi\u015fmezlik, bir tuple&#8217;\u0131n olu\u015fturulduktan sonra i\u00e7eri\u011finin (elemanlar\u0131n\u0131n) ne eklenebilece\u011fi, ne \u00e7\u0131kar\u0131labilece\u011fi ne de de\u011fi\u015ftirilebilece\u011fi anlam\u0131na gelir. Bu \u00f6zellik, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak ve beklenmeyen yan etkileri \u00f6nlemek i\u00e7in kritik bir avantaj sunar. \u00d6rne\u011fin, bir tuple&#8217;\u0131 bir fonksiyona arg\u00fcman olarak verdi\u011finizde, fonksiyonun bu tuple&#8217;\u0131n i\u00e7eri\u011fini de\u011fi\u015ftiremeyece\u011finden emin olabilirsiniz. Bu, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k projelerde hata ay\u0131klama s\u00fcre\u00e7lerini basitle\u015ftirir ve kodun \u00f6ng\u00f6r\u00fclebilirli\u011fini art\u0131r\u0131r. Ayr\u0131ca, tuple&#8217;lar de\u011fi\u015fmez olduklar\u0131 i\u00e7in Python&#8217;da &#8220;hashable&#8221; (karma de\u011feri hesaplanabilir) bir yap\u0131ya sahiptirler. Bu durum, onlar\u0131 s\u00f6zl\u00fcklerin (dictionary) anahtar\u0131 veya k\u00fcme (set) eleman\u0131 olarak kullanmam\u0131za olanak tan\u0131r ki, listeler bu ama\u00e7la kullan\u0131lamazlar.<\/p>\n<p>Peki, tuple&#8217;lar\u0131 ne zaman kullanmal\u0131y\u0131z? E\u011fer bir veri koleksiyonunun i\u00e7eri\u011finin program\u0131n \u00e7al\u0131\u015fma s\u00fcresi boyunca sabit kalmas\u0131 gerekiyorsa, tuple&#8217;lar ideal bir se\u00e7imdir. \u00d6rne\u011fin, bir fonksiyonun birden fazla de\u011fer d\u00f6nd\u00fcrmesi gerekti\u011finde, bu de\u011ferleri bir tuple i\u00e7inde paketleyerek d\u00f6nd\u00fcrebiliriz. Bu, Python&#8217;da \u00e7ok yayg\u0131n bir kullan\u0131m \u015feklidir ve kodun daha temiz ve anla\u015f\u0131l\u0131r olmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, bir veri setinin performans a\u00e7\u0131s\u0131ndan h\u0131zl\u0131 okunmas\u0131 veya bellek a\u00e7\u0131s\u0131ndan daha verimli kullan\u0131lmas\u0131 gerekti\u011finde de tuple&#8217;lar listelere k\u0131yasla baz\u0131 avantajlar sunabilir. Tuple&#8217;lar genellikle listelerden daha az bellek t\u00fcketir ve \u00fczerlerinde yap\u0131lan baz\u0131 i\u015flemler (\u00f6rne\u011fin, iterasyon) daha h\u0131zl\u0131 ger\u00e7ekle\u015febilir \u00e7\u00fcnk\u00fc boyutlar\u0131 sabittir ve Python&#8217;\u0131n bu konuda optimizasyon yapmas\u0131na olanak tan\u0131r. Dolay\u0131s\u0131yla, bir veri yap\u0131s\u0131n\u0131n hem s\u0131ral\u0131 olmas\u0131n\u0131 istiyor hem de i\u00e7eri\u011finin asla de\u011fi\u015fmemesini arzu ediyorsan\u0131z, Python tuple kesinlikle g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z gereken bir se\u00e7enektir.<\/p>\n<h3>Tuple Olu\u015fturma ve Temel \u0130\u015flemler: Ad\u0131m Ad\u0131m Rehber<\/h3>\n<p>Python&#8217;da tuple olu\u015fturmak olduk\u00e7a basittir ve genellikle parantezler <code>()<\/code> kullan\u0131larak yap\u0131l\u0131r. Ancak parantezler teknik olarak zorunlu de\u011fildir; Python, \u00f6\u011feleri virg\u00fclle ay\u0131rd\u0131\u011f\u0131n\u0131zda otomatik olarak bir tuple olarak alg\u0131lar. Yine de, okunabilirlik ve a\u00e7\u0131k kod yazma a\u00e7\u0131s\u0131ndan parantez kullanmak iyi bir uygulamad\u0131r. \u015eimdi, farkl\u0131 \u015fekillerde tuple&#8217;lar nas\u0131l olu\u015fturulur ve \u00fczerlerinde ne gibi temel i\u015flemler yap\u0131labilir, ad\u0131m ad\u0131m inceleyelim.<\/p>\n<p><strong>Bo\u015f Bir Tuple Olu\u015fturma:<\/strong><\/p>\n<p>Hi\u00e7bir \u00f6\u011fe i\u00e7ermeyen bir tuple&#8217;\u0131 basit\u00e7e bo\u015f parantezlerle olu\u015fturabilirsiniz:<\/p>\n<pre><code>\nbo\u015f_tuple = ()\nprint(bo\u015f_tuple)  # \u00c7\u0131kt\u0131: ()\nprint(type(bo\u015f_tuple)) # \u00c7\u0131kt\u0131: <class 'tuple'>\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Tek Elemanl\u0131 Bir Tuple Olu\u015fturma:<\/strong><\/p>\n<p>Bu, yeni ba\u015flayanlar i\u00e7in bazen kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilen \u00f6nemli bir noktad\u0131r. Tek bir eleman i\u00e7eren bir tuple olu\u015fturmak istedi\u011finizde, elemandan sonra mutlaka bir virg\u00fcl koymal\u0131s\u0131n\u0131z. E\u011fer virg\u00fcl koymazsan\u0131z, Python bunu bir tuple olarak de\u011fil, sadece parantez i\u00e7indeki bir ifade olarak yorumlar:<\/p>\n<pre><code>\ntek_elemanl\u0131_tuple = (42,) # Virg\u00fcle dikkat!\nprint(tek_elemanl\u0131_tuple) # \u00c7\u0131kt\u0131: (42,)\nprint(type(tek_elemanl\u0131_tuple)) # \u00c7\u0131kt\u0131: <class 'tuple'>\n\nde\u011fil_tuple = (42) # Virg\u00fcls\u00fcz, sadece bir say\u0131\nprint(de\u011fil_tuple) # \u00c7\u0131kt\u0131: 42\nprint(type(de\u011fil_tuple)) # \u00c7\u0131kt\u0131: <class 'int'>\n<\/pre>\n<p><\/code><\/p>\n<aside class=\"expert-tip\">Uzman \u0130pucu: Tek elemanl\u0131 tuple olu\u015ftururken virg\u00fcl\u00fc unutmak, yayg\u0131n bir hatad\u0131r. Her zaman parantez i\u00e7ine al\u0131p elemandan sonra bir virg\u00fcl ekleyerek bu hatadan ka\u00e7\u0131n\u0131n.<\/aside>\n<p><strong>Birden Fazla Elemanl\u0131 Tuple Olu\u015fturma:<\/strong><\/p>\n<p>\u00c7o\u011fu zaman, birden fazla eleman i\u00e7eren tuple'lar olu\u015fturacaks\u0131n\u0131z. Bu durumda elemanlar\u0131 virg\u00fcllerle ay\u0131rarak parantez i\u00e7ine al\u0131rs\u0131n\u0131z. Tuple'lar farkl\u0131 veri tiplerinden (integer, string, float, hatta ba\u015fka listeler veya tuple'lar) elemanlar\u0131 bir arada tutabilirler:<\/p>\n<pre><code>\nnokta = (10, 20)\nkullan\u0131c\u0131_bilgisi = (\"Ay\u015fe\", 30, \"ayse@example.com\")\nkar\u0131\u015f\u0131k_veri = (\"Python\", 3.10, True, [1, 2, 3])\n\nprint(nokta) # \u00c7\u0131kt\u0131: (10, 20)\nprint(kullan\u0131c\u0131_bilgisi) # \u00c7\u0131kt\u0131: ('Ay\u015fe', 30, 'ayse@example.com')\nprint(kar\u0131\u015f\u0131k_veri) # \u00c7\u0131kt\u0131: ('Python', 3.10, True, [1, 2, 3])\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Tuple Elemanlar\u0131na Eri\u015fme (\u0130ndeksleme ve Dilimleme):<\/strong><\/p>\n<p>Tuple'lar s\u0131ral\u0131 koleksiyonlar oldu\u011fu i\u00e7in, listelerdeki gibi indeksleme (s\u0131ra numaras\u0131 ile eri\u015fim) ve dilimleme (belli bir aral\u0131ktaki elemanlara eri\u015fim) i\u015flemleri yapabilirsiniz. \u0130ndeksler 0'dan ba\u015flar ve negatif indeksler sondan ba\u015fa do\u011fru saymak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code>\nrenkler = (\"k\u0131rm\u0131z\u0131\", \"ye\u015fil\", \"mavi\", \"sar\u0131\")\n\nprint(renkler[0]) # \u00c7\u0131kt\u0131: k\u0131rm\u0131z\u0131 (ilk eleman)\nprint(renkler[2]) # \u00c7\u0131kt\u0131: mavi (\u00fc\u00e7\u00fcnc\u00fc eleman)\nprint(renkler[-1]) # \u00c7\u0131kt\u0131: sar\u0131 (son eleman)\n\n# Dilimleme: [ba\u015flang\u0131\u00e7:biti\u015f:ad\u0131m]\nprint(renkler[1:3]) # \u00c7\u0131kt\u0131: ('ye\u015fil', 'mavi') (indeks 1'den 3'e kadar, 3 hari\u00e7)\nprint(renkler[:2]) # \u00c7\u0131kt\u0131: ('k\u0131rm\u0131z\u0131', 'ye\u015fil') (ba\u015ftan 2. indekse kadar)\nprint(renkler[2:]) # \u00c7\u0131kt\u0131: ('mavi', 'sar\u0131') (2. indeksten sona kadar)\nprint(renkler[::2]) # \u00c7\u0131kt\u0131: ('k\u0131rm\u0131z\u0131', 'mavi') (her ikinci eleman)\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Tuple Birle\u015ftirme (Concatenation) ve \u00c7arpma:<\/strong><\/p>\n<p>\u0130ki veya daha fazla tuple'\u0131 <code>+<\/code> operat\u00f6r\u00fc ile birle\u015ftirebilirsiniz. Bu i\u015flem yeni bir tuple d\u00f6nd\u00fcr\u00fcr; mevcut tuple'lar de\u011fi\u015fmezler.<\/p>\n<pre><code>\ntuple1 = (1, 2, 3)\ntuple2 = (4, 5, 6)\nbirle\u015fik_tuple = tuple1 + tuple2\nprint(birle\u015fik_tuple) # \u00c7\u0131kt\u0131: (1, 2, 3, 4, 5, 6)\n<\/pre>\n<p><\/code><\/p>\n<p>Bir tuple'\u0131 <code>*<\/code> operat\u00f6r\u00fc ile \u00e7arparak i\u00e7eri\u011fini tekrarlayabilirsiniz:<\/p>\n<pre><code>\ntekrar_tuple = (\"a\",) * 3\nprint(tekrar_tuple) # \u00c7\u0131kt\u0131: ('a', 'a', 'a')\n<\/pre>\n<p><\/code><\/p>\n<p><strong>Tuple Uzunlu\u011funu Bulma:<\/strong><\/p>\n<p>Bir tuple'daki eleman say\u0131s\u0131n\u0131 <code>len()<\/code> fonksiyonu ile kolayca bulabilirsiniz:<\/p>\n<pre><code>\nmeyveler = (\"elma\", \"muz\", \"\u00e7ilek\")\nprint(len(meyveler)) # \u00c7\u0131kt\u0131: 3\n<\/pre>\n<p><\/code><\/p>\n<p>Bu temel i\u015flemler, Python tuple'lar\u0131 ile \u00e7al\u0131\u015fmaya ba\u015flamak i\u00e7in sa\u011flam bir temel olu\u015fturur. Tuple'lar\u0131n de\u011fi\u015fmezli\u011fi g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, bu i\u015flemlerin her zaman yeni bir tuple d\u00f6nd\u00fcrd\u00fc\u011f\u00fcn\u00fc ve orijinal tuple'\u0131 asla de\u011fi\u015ftirmedi\u011fini unutmamak \u00f6nemlidir.<\/p>\n<h2>Tuple'lar\u0131n De\u011fi\u015fmez Yap\u0131s\u0131 ve Listelerle Fark\u0131 Nelerdir?<\/h2>\n<p>Python'da tuple'lar\u0131n en belirgin ve temel \u00f6zelli\u011fi, onlar\u0131n \"de\u011fi\u015fmez\" (immutable) olmas\u0131d\u0131r. Bu kavram, tuple'lar\u0131n bir kez olu\u015fturulduktan sonra elemanlar\u0131n\u0131n eklenememesi, \u00e7\u0131kar\u0131lamamas\u0131 veya de\u011fi\u015ftirilememesi anlam\u0131na gelir. Bir tuple'\u0131n i\u00e7eri\u011fini de\u011fi\u015ftirmeye y\u00f6nelik herhangi bir giri\u015fim, genellikle bir <code>TypeError<\/code> ile sonu\u00e7lan\u0131r. Bu de\u011fi\u015fmezlik ilkesi, tuple'lar\u0131 listelerden (mutable yani de\u011fi\u015febilir yap\u0131lar) a\u00e7\u0131k\u00e7a ay\u0131r\u0131r ve onlar\u0131 belirli programlama senaryolar\u0131 i\u00e7in vazge\u00e7ilmez k\u0131lar.<\/p>\n<p><strong>De\u011fi\u015fmezli\u011fin \u00d6nemi: Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc ve G\u00fcvenlik<\/strong><\/p>\n<p>De\u011fi\u015fmezlik, \u00f6zellikle veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bir tuple'\u0131n i\u00e7eri\u011fi sabit kald\u0131\u011f\u0131 i\u00e7in, program\u0131n\u0131z\u0131n farkl\u0131 b\u00f6l\u00fcmlerinde veya farkl\u0131 i\u015flevlerinde bu veriyi payla\u015ft\u0131\u011f\u0131n\u0131zda, verinin beklenmedik bir \u015fekilde de\u011fi\u015ftirilmesi riskini ortadan kald\u0131r\u0131rs\u0131n\u0131z. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n do\u011fum tarihi veya bir \u00fcr\u00fcn\u00fcn benzersiz kimlik numaras\u0131 gibi hassas bilgileri bir tuple i\u00e7inde saklad\u0131\u011f\u0131n\u0131zda, bu bilgilerin yanl\u0131\u015fl\u0131kla veya k\u00f6t\u00fc niyetli bir \u015fekilde de\u011fi\u015ftirilmesini engellersiniz. Bu \"g\u00fcvenlik\" katman\u0131, \u00f6zellikle \u00e7oklu i\u015f par\u00e7ac\u0131kl\u0131 (multithreaded) veya da\u011f\u0131t\u0131lm\u0131\u015f (distributed) sistemlerde tutarl\u0131l\u0131k a\u00e7\u0131s\u0131ndan kritik olabilir.<\/p>\n<p><strong>Mutable Eleman \u0130\u00e7eren Tuple'lar: Bir Nuans<\/strong><\/p>\n<p>Tuple'lar kendileri de\u011fi\u015fmez olsa da, e\u011fer bir tuple'\u0131n i\u00e7inde de\u011fi\u015ftirilebilir (mutable) bir eleman (\u00f6rne\u011fin, bir liste veya ba\u015fka bir s\u00f6zl\u00fck) varsa, o eleman\u0131n i\u00e7eri\u011fi hala de\u011fi\u015ftirilebilir. Tuple'\u0131n referans\u0131 sabittir, ancak referans\u0131n i\u015faret etti\u011fi objenin i\u00e7eri\u011fi de\u011fi\u015ftirilebilir. Bu, \u00f6nemli bir ayr\u0131md\u0131r ve bazen beklenmeyen davran\u0131\u015flara yol a\u00e7abilir:<\/p>\n<pre><code>\ntuple_i\u00e7inde_liste = (1, 2, [3, 4])\nprint(tuple_i\u00e7inde_liste) # \u00c7\u0131kt\u0131: (1, 2, [3, 4])\n\n# Tuple'\u0131n eleman\u0131n\u0131 de\u011fi\u015ftiremeyiz:\n# tuple_i\u00e7inde_liste[0] = 5  # Hata: TypeError: 'tuple' object does not support item assignment\n\n# Ancak i\u00e7indeki listeyi de\u011fi\u015ftirebiliriz:\ntuple_i\u00e7inde_liste[2].append(5)\nprint(tuple_i\u00e7inde_liste) # \u00c7\u0131kt\u0131: (1, 2, [3, 4, 5])\n<\/pre>\n<p><\/code><\/p>\n<p>Bu senaryo, tuple'lar\u0131n \"referanslar\u0131n\u0131n\" de\u011fi\u015fmez oldu\u011funu, ancak referans ettikleri nesnelerin de\u011fi\u015fmez olmak zorunda olmad\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a g\u00f6stermektedir. Bu, Python'\u0131n bellekteki nesneleri nas\u0131l ele ald\u0131\u011f\u0131n\u0131n bir yans\u0131mas\u0131d\u0131r.<\/p>\n<p><strong>Performans Avantajlar\u0131 ve Bellek Y\u00f6netimi<\/strong><\/p>\n<p>De\u011fi\u015fmezlik, tuple'lara baz\u0131 performans avantajlar\u0131 da sa\u011flar. Python, de\u011fi\u015fmez nesnelerin boyutunu ve yap\u0131s\u0131n\u0131 \u00f6nceden bildi\u011fi i\u00e7in, listelere k\u0131yasla bellek tahsisi ve optimizasyon konusunda daha verimli olabilir. Genel olarak, tuple'lar listelerden daha az bellek ayak izine sahiptir ve \u00f6zellikle b\u00fcy\u00fck veri setleriyle \u00e7al\u0131\u015f\u0131rken bu fark \u00f6nem kazanabilir. Ayr\u0131ca, tuple'lar \u00fczerinde yap\u0131lan baz\u0131 i\u015flemler (\u00f6rne\u011fin, iterasyon) listelere g\u00f6re biraz daha h\u0131zl\u0131 olabilir, \u00e7\u00fcnk\u00fc Python'\u0131n de\u011fi\u015fiklik olamayaca\u011f\u0131n\u0131 bilmesi, baz\u0131 dahili optimizasyonlara izin verir. Hashable olmalar\u0131 da, onlar\u0131 k\u00fcmeler ve s\u00f6zl\u00fckler gibi hash tabanl\u0131 veri yap\u0131lar\u0131nda anahtar olarak kullanma imkan\u0131 sunarak, bu veri yap\u0131lar\u0131n\u0131n h\u0131zl\u0131 arama yeteneklerinden faydalanmam\u0131z\u0131 sa\u011flar.<\/p>\n<p><strong>Listeler ve Tuple'lar Aras\u0131ndaki Temel Farklar:<\/strong><\/p>\n<p>A\u015fa\u011f\u0131daki tablo, listeler ve tuple'lar aras\u0131ndaki ana farklar\u0131 \u00f6zetlemektedir:<\/p>\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Listeler (List)<\/th>\n<th>Tuple'lar (Tuple)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>De\u011fi\u015febilirlik<\/td>\n<td>Mutable (De\u011fi\u015febilir)<\/td>\n<td>Immutable (De\u011fi\u015fmez)<\/td>\n<\/tr>\n<tr>\n<td>Tan\u0131mlama<\/td>\n<td>K\u00f6\u015feli parantezler <code>[]<\/code> ile<\/td>\n<td>Parantezler <code>()<\/code> veya virg\u00fclle ay\u0131rma ile<\/td>\n<\/tr>\n<tr>\n<td>Eleman Ekleme\/\u00c7\u0131karma<\/td>\n<td>M\u00fcmk\u00fcn (append, insert, remove, pop)<\/td>\n<td>M\u00fcmk\u00fcn de\u011fil<\/td>\n<\/tr>\n<tr>\n<td>Bellek T\u00fcketimi<\/td>\n<td>Genellikle daha fazla<\/td>\n<td>Genellikle daha az<\/td>\n<\/tr>\n<tr>\n<td>Performans<\/td>\n<td>Baz\u0131 i\u015flemler daha yava\u015f olabilir<\/td>\n<td>Daha h\u0131zl\u0131 iterasyon ve baz\u0131 i\u015flemler<\/td>\n<\/tr>\n<tr>\n<td>Kullan\u0131m Alan\u0131<\/td>\n<td>De\u011fi\u015fken veri koleksiyonlar\u0131, y\u0131\u011f\u0131n (stack), kuyruk (queue)<\/td>\n<td>Sabit veri koleksiyonlar\u0131, fonksiyon d\u00f6n\u00fc\u015f de\u011ferleri, s\u00f6zl\u00fck anahtarlar\u0131<\/td>\n<\/tr>\n<tr>\n<td>Hashable Olma<\/td>\n<td>De\u011fil<\/td>\n<td>Evet (i\u00e7eriklerinde mutable eleman yoksa)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u00d6zetle, listeler esneklik ve dinamik veri y\u00f6netimi i\u00e7in idealdir; tuple'lar ise veri b\u00fct\u00fcnl\u00fc\u011f\u00fc, g\u00fcvenlik ve sabit veri temsili gerekti\u011finde \u00fcst\u00fcnl\u00fck sa\u011flar. Programlama senaryonuzun gereksinimlerine g\u00f6re do\u011fru veri yap\u0131s\u0131n\u0131 se\u00e7mek, daha sa\u011flam ve verimli kod yazman\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda Tuple Kullan\u0131m\u0131: Vaka Analizleri<\/h3>\n<p>Tuple'lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131 ve di\u011fer \u00f6zellikleriyle, Python programlamas\u0131nda olduk\u00e7a \u00e7e\u015fitli ve pratik kullan\u0131m alanlar\u0131 bulunur. Sadece basit bir veri koleksiyonu olmaktan \u00f6te, tuple'lar kodun okunabilirli\u011fini, g\u00fcvenli\u011fini ve bazen de performans\u0131n\u0131 art\u0131rabilir. \u015eimdi, tuple'lar\u0131n ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131ld\u0131\u011f\u0131na dair baz\u0131 vaka analizlerini inceleyelim.<\/p>\n<aside class=\"case-study\">\n<h3>Vaka 1: Fonksiyonlardan Birden Fazla De\u011fer D\u00f6nd\u00fcrme<\/h3>\n<p>Python'da bir fonksiyonun yaln\u0131zca tek bir de\u011fer d\u00f6nd\u00fcrebilece\u011fi teknik olarak do\u011frudur. Ancak, tuple'lar sayesinde birden fazla de\u011feri tek bir nesne (tuple) i\u00e7inde paketleyerek d\u00f6nd\u00fcrmek m\u00fcmk\u00fcnd\u00fcr. Bu, \u00f6zellikle bir i\u015flem sonucunda birden fazla farkl\u0131 t\u00fcrde bilgiye ihtiya\u00e7 duyuldu\u011funda \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code>\ndef kullan\u0131c\u0131_bilgisi_al(kullan\u0131c\u0131_id):\n    # Ger\u00e7ek bir senaryoda bu bilgiler bir veritaban\u0131ndan \u00e7ekilir\n    if kullan\u0131c\u0131_id == 1:\n        isim = \"Emre Can\"\n        ya\u015f = 28\n        e_posta = \"emre.can@example.com\"\n        return (isim, ya\u015f, e_posta) # Tuple olarak d\u00f6nd\u00fcr\u00fcl\u00fcyor\n    else:\n        return None # Kullan\u0131c\u0131 bulunamad\u0131\n\n# Fonksiyonu \u00e7a\u011f\u0131rma ve de\u011ferleri a\u00e7ma (unpacking)\nbilgi = kullan\u0131c\u0131_bilgisi_al(1)\n\nif bilgi:\n    ad, ya\u015f, e_posta_adresi = bilgi # Tuple unpacking\n    print(f\"Ad: {ad}, Ya\u015f: {ya\u015f}, E-posta: {e_posta_adresi}\")\n    # \u00c7\u0131kt\u0131: Ad: Emre Can, Ya\u015f: 28, E-posta: emre.can@example.com\nelse:\n    print(\"Kullan\u0131c\u0131 bulunamad\u0131.\")\n\n# Bir ba\u015fka \u00f6rnek: Co\u011frafi koordinatlar\ndef get_coordinates():\n    lat = 40.7128 # Enlem\n    lon = -74.0060 # Boylam\n    return (lat, lon)\n\nlatitude, longitude = get_coordinates()\nprint(f\"Konum: Enlem={latitude}, Boylam={longitude}\")\n# \u00c7\u0131kt\u0131: Konum: Enlem=40.7128, Boylam=-74.006\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>kullan\u0131c\u0131_bilgisi_al<\/code> fonksiyonu, bir kullan\u0131c\u0131ya ait isim, ya\u015f ve e-posta adresini bir tuple i\u00e7inde d\u00f6nd\u00fcr\u00fcyor. Bu tuple, daha sonra <code>ad, ya\u015f, e_posta_adresi = bilgi<\/code> gibi basit bir atama ile kolayca a\u00e7\u0131labilir (unpacking). Bu y\u00f6ntem, \u00e7ok say\u0131da parametre veya d\u00f6n\u00fc\u015f de\u011feri ile u\u011fra\u015fmak zorunda kalmadan fonksiyonlar\u0131n\u0131z\u0131 daha mod\u00fcler hale getirmenizi sa\u011flar.<\/p>\n<\/aside>\n<aside class=\"case-study\">\n<h3>Vaka 2: Veri Paketleme ve A\u00e7ma (Packing & Unpacking)<\/h3>\n<p>Python'daki tuple'lar, verileri \"paketleme\" (packing) ve \"a\u00e7ma\" (unpacking) yetenekleri sayesinde olduk\u00e7a esnektir. Paketleme, birden fazla de\u011feri tek bir tuple i\u00e7inde toplama i\u015flemidir, a\u00e7ma ise bir tuple'daki de\u011ferleri ayr\u0131 de\u011fi\u015fkenlere atama i\u015flemidir. Bu, \u00f6zellikle k\u0131sa ve anla\u015f\u0131l\u0131r atamalar yapmak i\u00e7in idealdir.<\/p>\n<pre><code>\n# Veri Paketleme\n# Virg\u00fclle ayr\u0131lm\u0131\u015f de\u011ferler otomatik olarak bir tuple olarak alg\u0131lan\u0131r\nsay\u0131lar = 10, 20, 30\nprint(type(say\u0131lar)) # \u00c7\u0131kt\u0131: <class 'tuple'>\nprint(say\u0131lar)       # \u00c7\u0131kt\u0131: (10, 20, 30)\n\n# Veri A\u00e7ma (Tuple Unpacking)\na, b, c = say\u0131lar\nprint(f\"a: {a}, b: {b}, c: {c}\") # \u00c7\u0131kt\u0131: a: 10, b: 20, c: 30\n\n# Fonksiyon parametreleri olarak unpacking\ndef toplam_ve_\u00e7arp\u0131m(*args): # *args ile herhangi say\u0131da arg\u00fcman tuple olarak al\u0131n\u0131r\n    toplam = sum(args)\n    \u00e7arp\u0131m = 1\n    for x in args:\n        \u00e7arp\u0131m *= x\n    return toplam, \u00e7arp\u0131m # Otomatik olarak tuple olarak d\u00f6nd\u00fcr\u00fcl\u00fcr\n\nsonu\u00e7_toplam, sonu\u00e7_\u00e7arp\u0131m = toplam_ve_\u00e7arp\u0131m(1, 2, 3, 4)\nprint(f\"Toplam: {sonu\u00e7_toplam}, \u00c7arp\u0131m: {sonu\u00e7_\u00e7arp\u0131m}\")\n# \u00c7\u0131kt\u0131: Toplam: 10, \u00c7arp\u0131m: 24\n    <\/pre>\n<p><\/code><\/p>\n<p>Tuple a\u00e7ma, \u00f6zellikle d\u00f6ng\u00fclerde veya \u00e7oklu atamalarda kodunuzu basitle\u015ftirir. \u00d6rne\u011fin, bir <code>for<\/code> d\u00f6ng\u00fcs\u00fcnde <code>enumerate<\/code> veya <code>zip<\/code> fonksiyonlar\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zda, her iterasyonda bir tuple d\u00f6nd\u00fcr\u00fcl\u00fcr ve siz bu tuple'\u0131 do\u011frudan a\u00e7abilirsiniz.<\/p>\n<\/aside>\n<aside class=\"case-study\">\n<h3>Vaka 3: S\u00f6zl\u00fck (Dictionary) Anahtar\u0131 Olarak Kullan\u0131m<\/h3>\n<p>Python s\u00f6zl\u00fckleri, anahtar-de\u011fer \u00e7iftlerini saklar. S\u00f6zl\u00fck anahtarlar\u0131 \"hashable\" (karma de\u011feri hesaplanabilir) olmak zorundad\u0131r. Listeler de\u011fi\u015ftirilebilir olduklar\u0131 i\u00e7in hashable de\u011fildir ve bu nedenle s\u00f6zl\u00fck anahtar\u0131 olarak kullan\u0131lamazlar. Ancak tuple'lar, i\u00e7erikleri tamamen de\u011fi\u015fmez elemanlardan olu\u015ftu\u011fu s\u00fcrece hashable'd\u0131r ve bu sayede birle\u015ftirilmi\u015f (composite) anahtarlar olu\u015fturmak i\u00e7in kullan\u0131labilirler.<\/p>\n<pre><code>\n# \u015eehir ve \u00dclke ikilisini anahtar olarak kullanma\n\u015fehir_n\u00fcfuslar\u0131 = {\n    (\"Ankara\", \"T\u00fcrkiye\"): 5_600_000,\n    (\"Paris\", \"Fransa\"): 2_100_000,\n    (\"Tokyo\", \"Japonya\"): 13_900_000\n}\n\nprint(f\"Ankara n\u00fcfusu: {\u015fehir_n\u00fcfuslar\u0131[('Ankara', 'T\u00fcrkiye')]}\")\n# \u00c7\u0131kt\u0131: Ankara n\u00fcfusu: 5600000\n\n# Bir listeyi anahtar olarak kullanma giri\u015fimi hata verir:\n# ge\u00e7ersiz_anahtar = {[1, 2]: \"de\u011fer\"} # Hata: TypeError: unhashable type: 'list'\n\n# \u0130\u00e7inde mutable eleman olan tuple da hashable de\u011fildir:\n# ge\u00e7ersiz_tuple_anahtar = {([1], 2): \"de\u011fer\"} # Hata: TypeError: unhashable type: 'list'\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu senaryo, \u00f6zellikle \u00e7ok boyutlu verileri temsil etmek veya benzersiz anahtarlar olu\u015fturmak i\u00e7in birden fazla bilginin birle\u015fimine ihtiya\u00e7 duyuldu\u011funda \u00e7ok faydal\u0131d\u0131r. \u00d6rne\u011fin, bir veritaban\u0131 tablosundaki birden fazla s\u00fctunun birincil anahtar (primary key) olarak i\u015flev g\u00f6rmesi gibi durumlarda, bu s\u00fctunlar\u0131n de\u011ferlerini bir tuple i\u00e7inde birle\u015ftirerek s\u00f6zl\u00fck anahtar\u0131 olarak kullanabilirsiniz. Bu, veri modellemesi ve eri\u015fimi a\u00e7\u0131s\u0131ndan hem g\u00fc\u00e7l\u00fc hem de temiz bir yakla\u015f\u0131md\u0131r.<\/p>\n<\/aside>\n<p>Bu vaka analizleri, tuple'lar\u0131n Python ekosisteminde ne kadar \u00e7e\u015fitli ve \u00f6nemli bir rol oynad\u0131\u011f\u0131n\u0131 g\u00f6stermektedir. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamaktan, kodun okunabilirli\u011fini art\u0131rmaya ve karma\u015f\u0131k veri yap\u0131lar\u0131n\u0131 y\u00f6netmeye kadar bir\u00e7ok alanda tuple'lar, programc\u0131lar\u0131n hayat\u0131n\u0131 kolayla\u015ft\u0131ran g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h2>Geli\u015fmi\u015f Tuple Teknikleri ve \u0130pu\u00e7lar\u0131: Performans ve Optimizasyon<\/h2>\n<p>Tuple'lar\u0131n temel kullan\u0131m alanlar\u0131n\u0131n \u00f6tesinde, Python'da daha geli\u015fmi\u015f teknikler ve ipu\u00e7lar\u0131 mevcuttur. Bu teknikler, kodunuzun performans\u0131n\u0131 optimize etmenize, okunabilirli\u011fini art\u0131rman\u0131za ve daha karma\u015f\u0131k veri yap\u0131lar\u0131yla etkili bir \u015fekilde \u00e7al\u0131\u015fman\u0131za olanak tan\u0131r. Tuple'lar\u0131n de\u011fi\u015fmez do\u011fas\u0131, belirli optimizasyonlar i\u00e7in kap\u0131y\u0131 a\u00e7ar ve onlar\u0131 baz\u0131 senaryolarda listelerden daha cazip bir se\u00e7enek haline getirir.<\/p>\n<h3><code>collections.namedtuple<\/code>: Semantik Okunabilirlik \u0130\u00e7in Adland\u0131r\u0131lm\u0131\u015f Demetler<\/h3>\n<p>Normal tuple'lar, elemanlara indeksleri (0, 1, 2, ...) arac\u0131l\u0131\u011f\u0131yla eri\u015filmesini gerektirir. Bu durum, tuple elemanlar\u0131n\u0131n ne anlama geldi\u011fini hat\u0131rlamay\u0131 zorla\u015ft\u0131rabilir, \u00f6zellikle de tuple'\u0131n \u00e7ok say\u0131da eleman\u0131 varsa. \u0130\u015fte burada <code>collections<\/code> mod\u00fcl\u00fcnden <code>namedtuple<\/code> devreye girer. <code>namedtuple<\/code>, bir tuple gibi davranan, ancak elemanlar\u0131na hem indeksle hem de anlaml\u0131 isimlerle eri\u015filebilen, okunabilirli\u011fi y\u00fcksek, hafif bir obje t\u00fcr\u00fc olu\u015fturman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code>\nfrom collections import namedtuple\n\n# 'Point' ad\u0131nda bir namedtuple s\u0131n\u0131f\u0131 olu\u015fturma\n# Alan adlar\u0131n\u0131 bir liste veya bo\u015flukla ayr\u0131lm\u0131\u015f string olarak verebilirsiniz.\nPoint = namedtuple('Point', ['x', 'y'])\n\n# Bir Point nesnesi olu\u015fturma\np1 = Point(x=10, y=20)\nprint(p1)          # \u00c7\u0131kt\u0131: Point(x=10, y=20)\nprint(p1.x)        # \u00c7\u0131kt\u0131: 10 (\u0130simle eri\u015fim)\nprint(p1[1])       # \u00c7\u0131kt\u0131: 20 (\u0130ndeksle eri\u015fim)\n\n# Ba\u015fka bir \u00f6rnek: \u00c7al\u0131\u015fan bilgisi\nEmployee = namedtuple('Employee', 'name age department salary')\nemp1 = Employee(\"Ali Veli\", 30, \"M\u00fchendislik\", 75000)\nprint(f\"{emp1.name} {emp1.department} b\u00f6l\u00fcm\u00fcnde \u00e7al\u0131\u015f\u0131yor ve {emp1.salary} maa\u015f al\u0131yor.\")\n# \u00c7\u0131kt\u0131: Ali Veli M\u00fchendislik b\u00f6l\u00fcm\u00fcnde \u00e7al\u0131\u015f\u0131yor ve 75000 maa\u015f al\u0131yor.\n<\/pre>\n<p><\/code><\/p>\n<p><code>namedtuple<\/code>'lar, \u00f6zellikle bir veritaban\u0131 sorgusundan d\u00f6nen sat\u0131rlar veya sabit yap\u0131daki veri kay\u0131tlar\u0131 gibi durumlarda kodunuzu daha anla\u015f\u0131l\u0131r hale getirir. Geleneksel tuple'lar\u0131n bellek verimlili\u011fini korurken, nesne benzeri bir eri\u015fim sa\u011flar.<\/p>\n<aside class=\"expert-tip\">Uzman \u0130pucu: \u00c7ok say\u0131da eleman\u0131 olan veya elemanlar\u0131n\u0131n ne anlama geldi\u011finin \u00f6nemli oldu\u011fu tuple'lar i\u00e7in her zaman <code>namedtuple<\/code> kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcn. Bu, kodunuzun gelecekteki bak\u0131m\u0131n\u0131 ve okunabilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/aside>\n<h3>Tuple'lar\u0131n D\u00f6ng\u00fclerde Kullan\u0131m\u0131 ve Performans<\/h3>\n<p>Tuple'lar, d\u00f6ng\u00fclerde listelere benzer \u015fekilde kullan\u0131labilir. <code>for<\/code> d\u00f6ng\u00fcleri ile tuple elemanlar\u0131 \u00fczerinde kolayca iterasyon yapabilirsiniz. De\u011fi\u015fmez olmalar\u0131 nedeniyle, d\u00f6ng\u00fc s\u0131ras\u0131nda elemanlar\u0131n de\u011fi\u015fme riski yoktur, bu da hata olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r.<\/p>\n<pre><code>\nkoordinatlar = ((1, 2), (3, 4), (5, 6))\n\nfor x, y in koordinatlar: # Tuple unpacking directly in the loop\n    print(f\"X: {x}, Y: {y}\")\n# \u00c7\u0131kt\u0131:\n# X: 1, Y: 2\n# X: 3, Y: 4\n# X: 5, Y: 6\n<\/pre>\n<p><\/code><\/p>\n<p>Performans a\u00e7\u0131s\u0131ndan, tuple'lar genellikle listelerden biraz daha h\u0131zl\u0131d\u0131r, \u00f6zellikle b\u00fcy\u00fck veri setleri \u00fczerinde iterasyon yaparken veya bellek a\u00e7\u0131s\u0131ndan hassas uygulamalarda. Bu fark, bireysel i\u015flemler i\u00e7in mikro d\u00fczeyde olsa da, milyonlarca i\u015flemde veya uzun s\u00fcre \u00e7al\u0131\u015fan uygulamalarda birikebilir.<\/p>\n<aside class=\"expert-tip\">Uzman \u0130pucu: B\u00fcy\u00fck veri setlerinde veri b\u00fct\u00fcnl\u00fc\u011f\u00fc garantisi ve hafif performans avantaj\u0131 ar\u0131yorsan\u0131z, de\u011fi\u015fmez veri koleksiyonlar\u0131 i\u00e7in tuple'lar\u0131 tercih edin. \u00d6zellikle veri okuma yo\u011funluklu i\u015flemlerde bu fark\u0131 hissedebilirsiniz.<\/aside>\n<h3>\u0130\u00e7 \u0130\u00e7e Tuple'lar ve Karma\u015f\u0131k Veri Yap\u0131lar\u0131<\/h3>\n<p>Tuple'lar, di\u011fer tuple'lar\u0131 veya ba\u015fka veri yap\u0131lar\u0131n\u0131 (listeler, s\u00f6zl\u00fckler) i\u00e7erebilir. Bu, daha karma\u015f\u0131k, hiyerar\u015fik veri yap\u0131lar\u0131 olu\u015fturman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, bir \u00f6\u011frencinin ad\u0131, ya\u015f grubu ve ders notlar\u0131n\u0131 i\u00e7eren bir tuple'lar listesi olu\u015fturabilirsiniz:<\/p>\n<pre><code>\n\u00f6\u011frenci_kay\u0131tlar\u0131 = (\n    (\"Ay\u015fe Y\u0131lmaz\", 18, (85, 90, 78)), # \u00d6\u011frenci bilgisi ve notlar\u0131 (nested tuple)\n    (\"Can Demir\", 19, (92, 75, 88)),\n    (\"Elif Kaya\", 17, (70, 80, 95))\n)\n\nfor \u00f6\u011frenci in \u00f6\u011frenci_kay\u0131tlar\u0131:\n    ad, ya\u015f, notlar = \u00f6\u011frenci\n    ort_not = sum(notlar) \/ len(notlar)\n    print(f\"{ad} ({ya\u015f} ya\u015f\u0131nda) ortalama notu: {ort_not:.2f}\")\n# \u00c7\u0131kt\u0131:\n# Ay\u015fe Y\u0131lmaz (18 ya\u015f\u0131nda) ortalama notu: 84.33\n# Can Demir (19 ya\u015f\u0131nda) ortalama notu: 85.00\n# Elif Kaya (17 ya\u015f\u0131nda) ortalama notu: 81.67\n<\/pre>\n<p><\/code><\/p>\n<p>Bu, veri modellemesinde esneklik sa\u011flar ve ili\u015fkisel verileri d\u00fczenli bir \u015fekilde tutmaya yard\u0131mc\u0131 olur. Tuple'lar\u0131n de\u011fi\u015fmezli\u011fi, bu t\u00fcr hiyerar\u015fik yap\u0131lardaki verilerin de kazara de\u011fi\u015ftirilmesini engeller (e\u011fer i\u00e7 i\u00e7e olan t\u00fcm elemanlar da de\u011fi\u015fmezse).<\/p>\n<h3><code>min()<\/code>, <code>max()<\/code>, <code>sum()<\/code>, <code>sorted()<\/code> Fonksiyonlar\u0131<\/h3>\n<p>Python'\u0131n dahili fonksiyonlar\u0131 <code>min()<\/code>, <code>max()<\/code>, <code>sum()<\/code>, <code>sorted()<\/code> tuple'lar \u00fczerinde de sorunsuz \u00e7al\u0131\u015f\u0131r. Bunlar, tuple i\u00e7indeki elemanlar \u00fczerinde s\u0131ralama, toplam alma gibi yayg\u0131n i\u015flemleri ger\u00e7ekle\u015ftirmenizi sa\u011flar.<\/p>\n<pre><code>\nsay\u0131lar_tuple = (5, 2, 9, 1, 7)\nprint(f\"Minimum: {min(say\u0131lar_tuple)}\") # \u00c7\u0131kt\u0131: 1\nprint(f\"Maksimum: {max(say\u0131lar_tuple)}\") # \u00c7\u0131kt\u0131: 9\nprint(f\"Toplam: {sum(say\u0131lar_tuple)}\")   # \u00c7\u0131kt\u0131: 24\n\ns\u0131ral\u0131_tuple = sorted(say\u0131lar_tuple) # sorted() her zaman liste d\u00f6nd\u00fcr\u00fcr\nprint(f\"S\u0131ral\u0131 (liste): {s\u0131ral\u0131_tuple}\") # \u00c7\u0131kt\u0131: [1, 2, 5, 7, 9]\n\n# Tekrar tuple'a d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in\ns\u0131ral\u0131_tuple_olarak = tuple(sorted(say\u0131lar_tuple))\nprint(f\"S\u0131ral\u0131 (tuple): {s\u0131ral\u0131_tuple_olarak}\") # \u00c7\u0131kt\u0131: (1, 2, 5, 7, 9)\n<\/pre>\n<p><\/code><\/p>\n<p>Bu ileri d\u00fczey teknikler ve ipu\u00e7lar\u0131, Python'da tuple'lar\u0131n g\u00fcc\u00fcn\u00fc tam olarak kullanman\u0131z\u0131 sa\u011flar. Do\u011fru senaryoda do\u011fru veri yap\u0131s\u0131n\u0131 se\u00e7mek, kodunuzun sadece \u00e7al\u0131\u015fmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda etkili, okunabilir ve bak\u0131m\u0131 kolay olmas\u0131n\u0131 da garanti eder.<\/p>\n<h2>Tuple Kullan\u0131m\u0131nda Kar\u015f\u0131la\u015f\u0131labilecek Zorluklar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Tuple'lar Python'da g\u00fc\u00e7l\u00fc ve kullan\u0131\u015fl\u0131 bir veri yap\u0131s\u0131 olsa da, baz\u0131 \u00f6zellikleri nedeniyle yeni ba\u015flayanlar veya deneyimli geli\u015ftiriciler i\u00e7in bile baz\u0131 zorluklar ve yanl\u0131\u015f anla\u015f\u0131lmalar yaratabilir. Bu b\u00f6l\u00fcmde, tuple kullan\u0131m\u0131nda s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan problemlere ve bunlar\u0131n \u00fcstesinden nas\u0131l gelinebilece\u011fine odaklanaca\u011f\u0131z.<\/p>\n<h3>Tek Elemanl\u0131 Tuple Hatas\u0131: Virg\u00fclden Kaynaklanan Yan\u0131lg\u0131lar<\/h3>\n<p>Daha \u00f6nce de bahsetti\u011fimiz gibi, tek elemanl\u0131 bir tuple olu\u015ftururken eleman\u0131n sonuna virg\u00fcl koymak zorunludur. Bu, Python'\u0131n parantez i\u00e7indeki de\u011feri bir tuple olarak de\u011fil, sadece parantezlenmi\u015f bir ifade olarak yorumlamas\u0131n\u0131 engeller. Bu, en s\u0131k yap\u0131lan hatalardan biridir ve debugging s\u0131ras\u0131nda kafa kar\u0131\u015ft\u0131r\u0131c\u0131 olabilir.<\/p>\n<pre><code>\n# Yanl\u0131\u015f kullan\u0131m:\ntek_say\u0131_yanl\u0131\u015f = (5)\nprint(type(tek_say\u0131_yanl\u0131\u015f)) # \u00c7\u0131kt\u0131: <class 'int'>\n\n# Do\u011fru kullan\u0131m:\ntek_say\u0131_do\u011fru = (5,)\nprint(type(tek_say\u0131_do\u011fru)) # \u00c7\u0131kt\u0131: <class 'tuple'>\n<\/pre>\n<p><\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> Her zaman tek elemanl\u0131 bir tuple olu\u015ftururken eleman\u0131n sonuna virg\u00fcl eklemeyi unutmay\u0131n. Bu basit kural\u0131 ak\u0131lda tutmak, bu yayg\u0131n hatay\u0131 \u00f6nleyecektir.<\/p>\n<h3>Mutable Elemanlar\u0131n De\u011fi\u015febilirli\u011fi: \"De\u011fi\u015fmezlik\" Yan\u0131lg\u0131s\u0131<\/h3>\n<p>Tuple'lar kendileri de\u011fi\u015fmez olsa da, e\u011fer bir tuple i\u00e7inde de\u011fi\u015ftirilebilir (mutable) bir eleman (\u00f6rne\u011fin, bir liste veya s\u00f6zl\u00fck) bar\u0131nd\u0131r\u0131yorsa, o mutable eleman\u0131n i\u00e7eri\u011fi hala de\u011fi\u015ftirilebilir. Bu durum, tuple'\u0131n \"de\u011fi\u015fmez\" oldu\u011fu genel fikriyle \u00e7eli\u015fiyor gibi g\u00f6r\u00fcnse de, asl\u0131nda tuple'\u0131n *referanslar\u0131n\u0131n* de\u011fi\u015fmez oldu\u011fu anlam\u0131na gelir, referanslar\u0131n i\u015faret etti\u011fi nesnelerin de\u011fil. Bu yan\u0131lg\u0131, beklenmedik yan etkilere ve hata ay\u0131klamas\u0131 zor bug'lara yol a\u00e7abilir.<\/p>\n<pre><code>\nveri_tuple = (1, [2, 3], 4)\n# veri_tuple[0] = 5 # TypeError: 'tuple' object does not support item assignment (Bu do\u011fru)\n\nveri_tuple[1].append(5) # Ama i\u00e7indeki listeyi de\u011fi\u015ftirebiliriz\nprint(veri_tuple) # \u00c7\u0131kt\u0131: (1, [2, 3, 5], 4) - Tuple de\u011fi\u015fmi\u015f gibi g\u00f6r\u00fcn\u00fcyor!\n<\/pre>\n<p><\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> E\u011fer bir tuple i\u00e7inde de\u011fi\u015ftirilebilir elemanlar bar\u0131nd\u0131rmak istemiyorsan\u0131z, tuple'\u0131 sadece de\u011fi\u015fmez elemanlarla (say\u0131lar, stringler, ba\u015fka tuple'lar) olu\u015fturdu\u011funuzdan emin olun. E\u011fer mutable elemanlara sahip bir tuple kullanmak zorundaysan\u0131z, bu elemanlar\u0131n i\u00e7eri\u011fini de\u011fi\u015ftirmemeye \u00f6zen g\u00f6sterin veya bu t\u00fcr yap\u0131lar\u0131 kullan\u0131rken ekstra dikkatli olun. Derin kopyalama (deep copy) gibi y\u00f6ntemler, bu t\u00fcr senaryolarda mutable elemanlar\u0131n da de\u011fi\u015fmezli\u011fini sa\u011flamak i\u00e7in kullan\u0131labilir, ancak bu, tuple'\u0131n temel amac\u0131 olan hafiflikten sapma anlam\u0131na gelebilir.<\/p>\n<h3>Tuple'lara De\u011fer Atanamamas\u0131 (Immutability): Esneklik K\u0131s\u0131tlamas\u0131<\/h3>\n<p>Tuple'lar\u0131n de\u011fi\u015fmezli\u011fi, onlar\u0131n en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri olsa da, ayn\u0131 zamanda bir k\u0131s\u0131tlama da getirir. Bir tuple'\u0131n elemanlar\u0131n\u0131 olu\u015fturduktan sonra de\u011fi\u015ftiremezsiniz, bu da dinamik olarak eleman ekleme veya \u00e7\u0131karma ihtiyac\u0131 olan durumlarda tuple'lar\u0131 kullan\u0131\u015fs\u0131z hale getirir.<\/p>\n<pre><code>\nmy_tuple = (1, 2, 3)\n# my_tuple[0] = 5  # Hata: TypeError\n# my_tuple.append(4) # Hata: AttributeError\n<\/pre>\n<p><\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> E\u011fer bir veri koleksiyonunun i\u00e7eri\u011finin program\u0131n \u00e7al\u0131\u015fma s\u00fcresi boyunca de\u011fi\u015fmesi gerekiyorsa, bunun yerine listeleri kullanmal\u0131s\u0131n\u0131z. Tuple'lar\u0131n de\u011fi\u015fmezli\u011fini bir k\u0131s\u0131tlama olarak de\u011fil, bir tasar\u0131m karar\u0131 ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fc garantisi olarak g\u00f6rmelisiniz. E\u011fer bir tuple'\u0131n i\u00e7eri\u011fini de\u011fi\u015ftirmeniz gerekiyorsa, asl\u0131nda yeni bir tuple olu\u015fturman\u0131z gerekir. Bu, mevcut tuple'\u0131n elemanlar\u0131n\u0131 al\u0131p, istedi\u011finiz de\u011fi\u015fiklikleri yaparak yeni bir tuple olu\u015fturmak anlam\u0131na gelir:<\/p>\n<pre><code>\neski_tuple = (1, 2, 3)\nyeni_tuple = eski_tuple + (4,) # Yeni bir tuple olu\u015fturduk\nprint(yeni_tuple) # \u00c7\u0131kt\u0131: (1, 2, 3, 4)\n\n# Belirli bir eleman\u0131 de\u011fi\u015ftirmek i\u00e7in:\neski_tuple = (\"a\", \"b\", \"c\")\n# \"b\" yerine \"x\" koymak istiyoruz\nyeni_tuple = eski_tuple[:1] + (\"x\",) + eski_tuple[2:]\nprint(yeni_tuple) # \u00c7\u0131kt\u0131: ('a', 'x', 'c')\n<\/pre>\n<p><\/code><\/p>\n<p>Bu yakla\u015f\u0131m, mevcut tuple'\u0131 de\u011fi\u015ftirmedi\u011fi i\u00e7in \"de\u011fi\u015fmezlik\" ilkesini korur.<\/p>\n<h3>Tuple'lar\u0131 ve Listeleri Birbirine D\u00f6n\u00fc\u015ft\u00fcrme<\/h3>\n<p>Bazen bir tuple'\u0131 bir listeye d\u00f6n\u00fc\u015ft\u00fcrmeniz veya tam tersi bir listeyi tuple'a d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekebilir. Python, bu d\u00f6n\u00fc\u015f\u00fcmleri ger\u00e7ekle\u015ftirmek i\u00e7in basit dahili fonksiyonlar sunar.<\/p>\n<pre><code>\n# Tuple'dan Listeye D\u00f6n\u00fc\u015ft\u00fcrme\nmy_tuple = (\"elma\", \"armut\", \"kiraz\")\nmy_list = list(my_tuple)\nprint(my_list) # \u00c7\u0131kt\u0131: ['elma', 'armut', 'kiraz']\nmy_list.append(\"muz\")\nprint(my_list) # \u00c7\u0131kt\u0131: ['elma', 'armut', 'kiraz', 'muz']\n\n# Listeden Tuple'a D\u00f6n\u00fc\u015ft\u00fcrme\nmy_list2 = [10, 20, 30]\nmy_tuple2 = tuple(my_list2)\nprint(my_tuple2) # \u00c7\u0131kt\u0131: (10, 20, 30)\n<\/pre>\n<p><\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> \u0130htiya\u00e7 duydu\u011funuz durumlarda <code>list()<\/code> ve <code>tuple()<\/code> fonksiyonlar\u0131n\u0131 kullanarak veri yap\u0131s\u0131n\u0131 d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz. Bu, bir tuple \u00fczerinde dinamik i\u015flemler yapman\u0131z gerekti\u011finde listeye ge\u00e7menize veya bir liste \u00fczerindeki de\u011fi\u015fiklikleri tamamlad\u0131ktan sonra veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc garanti alt\u0131na almak i\u00e7in tuple'a geri d\u00f6nmenize olanak tan\u0131r.<\/p>\n<p>Bu zorluklar\u0131 ve \u00e7\u00f6z\u00fcmlerini anlamak, tuple'lar\u0131 ne zaman ve nas\u0131l kullanaca\u011f\u0131n\u0131za dair daha bilin\u00e7li kararlar vermenizi sa\u011flayacakt\u0131r. Tuple'lar, do\u011fru kullan\u0131ld\u0131\u011f\u0131nda kodunuzu daha g\u00fcvenli, verimli ve okunabilir hale getiren de\u011ferli ara\u00e7lard\u0131r.<\/p>\n<h2>Python Tuple Kullan\u0131m\u0131n\u0131n Faydalar\u0131 ve \u0130leri Seviye Uygulamalar\u0131n\u0131z \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h2>\n<p>Python'da tuple'lar, yaln\u0131zca listelerin de\u011fi\u015fmez karde\u015fleri olmaktan \u00e7ok daha fazlas\u0131d\u0131r. Do\u011fru anla\u015f\u0131ld\u0131\u011f\u0131nda ve do\u011fru senaryolarda kullan\u0131ld\u0131\u011f\u0131nda, kodunuzun kalitesini, g\u00fcvenli\u011fini ve bazen de performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilirler. Bu b\u00f6l\u00fcmde, tuple kullan\u0131m\u0131n\u0131n temel faydalar\u0131n\u0131 \u00f6zetleyecek ve ileri seviye uygulamalar\u0131n\u0131z i\u00e7in baz\u0131 pratik ipu\u00e7lar\u0131 sunaca\u011f\u0131z.<\/p>\n<h3>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc ve G\u00fcvenli\u011fi: De\u011fi\u015fmezli\u011fin Garantisi<\/h3>\n<p>Tuple'lar\u0131n en \u00f6nemli ve ay\u0131rt edici \u00f6zelli\u011fi de\u011fi\u015fmez olmalar\u0131d\u0131r. Bu, bir tuple'\u0131n olu\u015fturulduktan sonra elemanlar\u0131n\u0131n de\u011fi\u015ftirilemeyece\u011fi, eklenemeyece\u011fi veya \u00e7\u0131kar\u0131lamayaca\u011f\u0131 anlam\u0131na gelir. Bu \u00f6zellik, \u00f6zellikle kritik verilerin (\u00f6rne\u011fin, yap\u0131land\u0131rma ayarlar\u0131, sabit koordinatlar, kimlik bilgileri) yanl\u0131\u015fl\u0131kla veya istenmeden de\u011fi\u015ftirilmesini \u00f6nlemek i\u00e7in paha bi\u00e7ilmez bir avantaj sunar. Program\u0131n\u0131z\u0131n farkl\u0131 b\u00f6lgeleri aras\u0131nda veri payla\u015ft\u0131\u011f\u0131n\u0131zda, bu verilerin bozulmayaca\u011f\u0131ndan emin olabilirsiniz. Bu, \u00f6zellikle b\u00fcy\u00fck ekiplerle \u00e7al\u0131\u015f\u0131rken veya uzun \u00f6m\u00fcrl\u00fc yaz\u0131l\u0131mlar geli\u015ftirirken hata ay\u0131klama s\u00fcre\u00e7lerini basitle\u015ftirir ve uygulaman\u0131n genel g\u00fcvenilirli\u011fini art\u0131r\u0131r.<\/p>\n<h3>Bellek Verimlili\u011fi ve Hafif Yap\u0131<\/h3>\n<p>Tuple'lar genellikle listelere g\u00f6re daha az bellek t\u00fcketir. Bunun nedeni, Python'\u0131n tuple'lar\u0131n de\u011fi\u015fmez oldu\u011funu bilmesi ve bellekte b\u00fcy\u00fckl\u00fckleri i\u00e7in \u00f6nceden daha sabit bir alan ay\u0131rabilmesidir. Listelerin ise dinamik olarak b\u00fcy\u00fcy\u00fcp k\u00fc\u00e7\u00fclebilme potansiyeli oldu\u011fundan, Python onlar i\u00e7in biraz daha fazla \"yedek\" bellek ay\u0131r\u0131r. Bu bellek verimlili\u011fi, \u00f6zellikle milyonlarca veri noktas\u0131n\u0131 i\u015fleyen uygulamalarda veya s\u0131n\u0131rl\u0131 kaynaklara sahip ortamlarda (\u00f6rne\u011fin, g\u00f6m\u00fcl\u00fc sistemler) \u00f6nemli hale gelebilir.<\/p>\n<pre><code>\nimport sys\n\nmy_list = [1, 2, 3, 4, 5]\nmy_tuple = (1, 2, 3, 4, 5)\n\nprint(f\"Liste boyutu: {sys.getsizeof(my_list)} byte\")\nprint(f\"Tuple boyutu: {sys.getsizeof(my_tuple)} byte\")\n# \u00c7\u0131kt\u0131lar genellikle tuple i\u00e7in daha az bellek g\u00f6sterir.\n# \u00d6rnek \u00c7\u0131kt\u0131:\n# Liste boyutu: 104 byte\n# Tuple boyutu: 88 byte\n<\/pre>\n<p><\/code><\/p>\n<h3>Fonksiyonel Programlamada Rol\u00fc: Yan Etkisiz \u00c7al\u0131\u015fma<\/h3>\n<p>Fonksiyonel programlama paradigmas\u0131nda \"saf fonksiyonlar\" kavram\u0131 \u00f6nemlidir; bu fonksiyonlar ayn\u0131 girdilerle her zaman ayn\u0131 \u00e7\u0131kt\u0131y\u0131 verir ve d\u0131\u015f d\u00fcnyaya herhangi bir yan etki yapmazlar. Tuple'lar, de\u011fi\u015fmez do\u011falar\u0131 sayesinde bu prensibe m\u00fckemmel uyum sa\u011flarlar. Bir fonksiyona bir tuple ge\u00e7irdi\u011finizde, fonksiyonun o tuple'\u0131n i\u00e7eri\u011fini de\u011fi\u015ftirmeyece\u011finden emin olabilirsiniz. Bu, daha \u00f6ng\u00f6r\u00fclebilir ve test edilebilir kod yazmaya yard\u0131mc\u0131 olur.<\/p>\n<h3><code>collections.namedtuple<\/code> ile Daha Okunakl\u0131 Kod Yazma<\/h3>\n<p>Daha \u00f6nce de bahsedildi\u011fi gibi, <code>namedtuple<\/code>'lar, indeks tabanl\u0131 eri\u015fimin \u00f6tesine ge\u00e7erek tuple elemanlar\u0131na anlaml\u0131 isimlerle eri\u015fim sa\u011flar. Bu, \u00f6zellikle veri yap\u0131n\u0131z\u0131n birden fazla eleman\u0131 oldu\u011funda veya kodunuzu okuyan ki\u015filerin elemanlar\u0131n ne anlama geldi\u011fini kolayca anlamas\u0131 gerekti\u011finde kod okunabilirli\u011fini muazzam derecede art\u0131r\u0131r. Bir veritaban\u0131ndan d\u00f6nen kay\u0131tlar\u0131 veya API yan\u0131tlar\u0131n\u0131 modelledi\u011finizde, <code>namedtuple<\/code>'lar, her bir eleman\u0131 indeksle \u00e7a\u011f\u0131rmak yerine <code>.alan_ad\u0131<\/code> \u015feklinde \u00e7a\u011f\u0131rman\u0131z\u0131 sa\u011flayarak kodunuzu kendini a\u00e7\u0131klay\u0131c\u0131 hale getirir.<\/p>\n<h3><code>*<\/code> Operat\u00f6r\u00fc ile Tuple'lar\u0131 Geni\u015fletme ve Birle\u015ftirme<\/h3>\n<p>Y\u0131ld\u0131z <code>*<\/code> operat\u00f6r\u00fc, tuple'lar \u00fczerinde \"paket a\u00e7ma\" (unpacking) veya \"geni\u015fletme\" (spreading) i\u00e7in kullan\u0131labilir. Bu, bir tuple'\u0131n elemanlar\u0131n\u0131 ba\u015fka bir tuple i\u00e7ine kolayca dahil etmenizi veya bir fonksiyon \u00e7a\u011fr\u0131s\u0131nda arg\u00fcman olarak ge\u00e7irmenizi sa\u011flar. Bu, kodu daha k\u0131sa ve zarif hale getirir.<\/p>\n<pre><code>\nbirinci = (1, 2)\nikinci = (4, 5)\nbirle\u015fik = (*birinci, 3, *ikinci)\nprint(birle\u015fik) # \u00c7\u0131kt\u0131: (1, 2, 3, 4, 5)\n\n# Fonksiyon arg\u00fcmanlar\u0131 olarak\ndef sum_all(*args):\n    return sum(args)\n\nsay\u0131lar_tuple = (10, 20, 30)\nprint(sum_all(*say\u0131lar_tuple)) # \u00c7\u0131kt\u0131: 60\n<\/pre>\n<p><\/code><\/p>\n<h3>Hashing ve Set\/Dictionary Kullan\u0131m\u0131<\/h3>\n<p>Tuple'lar\u0131n de\u011fi\u015fmez olmas\u0131, onlar\u0131 hashable yapar (i\u00e7erdikleri t\u00fcm elemanlar da hashable ise). Bu, tuple'lar\u0131n Python'da s\u00f6zl\u00fck anahtar\u0131 veya k\u00fcme eleman\u0131 olarak kullan\u0131labilece\u011fi anlam\u0131na gelir. Bu yetenek, benzersiz kombinasyonlar\u0131 depolaman\u0131z veya kompozit anahtarlar olu\u015fturman\u0131z gerekti\u011finde \u00e7ok g\u00fc\u00e7l\u00fcd\u00fcr. \u00d6rne\u011fin, bir \u015fehir-\u00fclke \u00e7iftini anahtar olarak kullanarak bir s\u00f6zl\u00fck olu\u015fturabilirsiniz.<\/p>\n<p>Sonu\u00e7 olarak, Python tuple'lar, verilerinizin de\u011fi\u015fmez kalmas\u0131n\u0131 istedi\u011finiz her durumda m\u00fckemmel bir se\u00e7imdir. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamas\u0131, bellek verimlili\u011fi, kod okunabilirli\u011fini art\u0131ran <code>namedtuple<\/code>'lar ve fonksiyonel programlamaya uyumu gibi faydalar\u0131yla, Python geli\u015ftiricilerinin ara\u00e7 kutusunda mutlaka bulunmas\u0131 gereken bir yap\u0131d\u0131r. Hangi veri yap\u0131s\u0131n\u0131 kullanaca\u011f\u0131n\u0131za karar verirken, verinizin ya\u015fam d\u00f6ng\u00fcs\u00fc boyunca de\u011fi\u015fip de\u011fi\u015fmeyece\u011fini her zaman g\u00f6z \u00f6n\u00fcnde bulundurun. E\u011fer de\u011fi\u015fmeyecekse, b\u00fcy\u00fck olas\u0131l\u0131kla bir tuple en iyi se\u00e7im olacakt\u0131r.<\/p>\n<aside class=\"expert-tip\">\n<h3>Mobil Uyumlu Veri G\u00f6sterimi \u0130pu\u00e7lar\u0131<\/h3>\n<p>Python'da tuple'lar\u0131 i\u015fledi\u011fimiz veriyi bir web aray\u00fcz\u00fcnde g\u00f6sterirken, mobil uyumluluk modern uygulamalar i\u00e7in elzemdir. Tuple'lar genellikle k\u00fc\u00e7\u00fck, sabit boyutlu veri par\u00e7ac\u0131klar\u0131 i\u00e7in kullan\u0131ld\u0131\u011f\u0131ndan, bunlar\u0131n mobil ekranlarda nas\u0131l sunuldu\u011funu d\u00fc\u015f\u00fcnmek \u00f6nemlidir. \u00d6rne\u011fin, bir tuple'daki kullan\u0131c\u0131 bilgilerini (ad, ya\u015f, e-posta) bir kart bile\u015feni olarak g\u00f6sterebilirsiniz. CSS Media Queries kullanarak ekran boyutuna g\u00f6re layout'u de\u011fi\u015ftirmek, bu verilerin k\u00fc\u00e7\u00fck ekranlarda da okunabilir kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code>\n\/* \u00d6rnek bir CSS medya sorgusu (HTML i\u00e7eri\u011fine dahil de\u011fildir, CSS dosyas\u0131nda yer al\u0131r) *\/\n\/*\n@media (max-width: 600px) {\n  .user-card {\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .user-card p {\n    margin-bottom: 5px;\n  }\n}\n*\/\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS kodu, 600 pikselden k\u00fc\u00e7\u00fck ekranlarda bir <code>.user-card<\/code> s\u0131n\u0131f\u0131na sahip elemanlar\u0131n d\u00fczenini dikey hale getirir. Bu, tuple'lardan gelen bilgilerin mobil cihazlarda daha iyi g\u00f6r\u00fcnmesini sa\u011flar. Python'da veriyi i\u015flerken, sunum katman\u0131n\u0131n bu t\u00fcr ihtiya\u00e7lar\u0131n\u0131 da g\u00f6z \u00f6n\u00fcnde bulundurmak, tam y\u0131\u011f\u0131n geli\u015ftiriciler i\u00e7in \u00f6nemli bir ad\u0131md\u0131r.<\/p>\n<\/aside>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<h3>S1: Python tuple'lar ile listeler aras\u0131ndaki temel fark nedir?<\/h3>\n<p><strong>C1:<\/strong> En temel fark, tuple'lar\u0131n de\u011fi\u015fmez (immutable) olmas\u0131, yani olu\u015fturulduktan sonra elemanlar\u0131n\u0131n de\u011fi\u015ftirilememesi, eklenememesi veya \u00e7\u0131kar\u0131lamamas\u0131d\u0131r. Listeler ise de\u011fi\u015febilir (mutable) yap\u0131dad\u0131r ve i\u00e7eri\u011fi dinamik olarak de\u011fi\u015ftirilebilir. Bu durum, tuple'lar\u0131 veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak ve sabit veri koleksiyonlar\u0131n\u0131 temsil etmek i\u00e7in ideal k\u0131larken, listeler dinamik veri y\u00f6netimi i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>S2: Tek elemanl\u0131 bir tuple'\u0131 nas\u0131l olu\u015ftururum?<\/h3>\n<p><strong>C2:<\/strong> Tek elemanl\u0131 bir tuple olu\u015ftururken, elemandan sonra mutlaka bir virg\u00fcl koymal\u0131s\u0131n\u0131z. \u00d6rne\u011fin, <code>(42,)<\/code>. E\u011fer virg\u00fcl\u00fc unutursan\u0131z (<code>(42)<\/code>), Python bunu bir tuple olarak de\u011fil, sadece parantez i\u00e7indeki bir ifade olarak yorumlar ve genellikle o eleman\u0131n veri tipi olarak alg\u0131lar (bu \u00f6rnekte bir integer).<\/p>\n<h3>S3: Bir tuple'\u0131n eleman\u0131n\u0131 de\u011fi\u015ftirmek m\u00fcmk\u00fcn m\u00fc?<\/h3>\n<p><strong>C3:<\/strong> Hay\u0131r, bir tuple'\u0131n do\u011frudan elemanlar\u0131n\u0131 de\u011fi\u015ftirmek m\u00fcmk\u00fcn de\u011fildir \u00e7\u00fcnk\u00fc tuple'lar de\u011fi\u015fmezdir. Bir tuple'\u0131n i\u00e7eri\u011fini de\u011fi\u015ftirmeniz gerekiyorsa, asl\u0131nda istedi\u011finiz de\u011fi\u015fiklikleri i\u00e7eren *yeni bir tuple* olu\u015fturman\u0131z gerekir. Bu, mevcut tuple'dan elemanlar\u0131 al\u0131p, istedi\u011finiz eleman\u0131 de\u011fi\u015ftirerek veya ekleyerek yeni bir tuple olu\u015fturmak anlam\u0131na gelir.<\/p>\n<h3>S4: Tuple'lar\u0131 s\u00f6zl\u00fck anahtar\u0131 olarak kullanabilir miyim?<\/h3>\n<p><strong>C4:<\/strong> Evet, tuple'lar, i\u00e7eriklerindeki t\u00fcm elemanlar da de\u011fi\u015fmez (hashable) oldu\u011fu s\u00fcrece s\u00f6zl\u00fck anahtar\u0131 olarak kullan\u0131labilirler. \u00c7\u00fcnk\u00fc s\u00f6zl\u00fck anahtarlar\u0131 hashable olmak zorundad\u0131r ve de\u011fi\u015fmez nesneler hashable'd\u0131r. Ancak, bir tuple'\u0131n i\u00e7inde de\u011fi\u015ftirilebilir bir eleman (\u00f6rne\u011fin, bir liste) varsa, o tuple hashable olmaz ve s\u00f6zl\u00fck anahtar\u0131 olarak kullan\u0131lamaz.<\/p>\n<h3>S5: Performans a\u00e7\u0131s\u0131ndan listeler mi yoksa tuple'lar m\u0131 daha iyidir?<\/h3>\n<p><strong>C5:<\/strong> Genellikle tuple'lar, listelere g\u00f6re biraz daha iyi performans ve daha az bellek t\u00fcketimi sunar. Bunun nedeni, tuple'lar\u0131n de\u011fi\u015fmez olmas\u0131 ve Python'\u0131n bu yap\u0131y\u0131 optimize etmek i\u00e7in daha fazla f\u0131rsata sahip olmas\u0131d\u0131r. Ancak bu performans fark\u0131, genellikle b\u00fcy\u00fck veri setleri \u00fczerinde yap\u0131lan yo\u011fun i\u015flemler veya bellek k\u0131s\u0131tl\u0131 ortamlar d\u0131\u015f\u0131nda \u00e7ok belirgin olmayabilir. Temel karar, verinin de\u011fi\u015fip de\u011fi\u015fmeyece\u011fi olmal\u0131d\u0131r, performans genellikle ikincil bir etkendir.<\/p>\n","protected":false},"excerpt":{"rendered":"Python&#8217;da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak&hellip;","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-31958","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&#039;da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)<\/title>\n<meta name=\"description\" content=\"Python&#039;da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak kritik \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada Python tuple (demet) devreye girer. Peki, Python&#039;da tuple nedir, listelerden fark\u0131 nelerdir ve hangi senaryolarda kullanmak daha avantajl\u0131d\u0131r? Bu makalede, tuple&#039;lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131n\u0131, performans faydalar\u0131n\u0131, ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulamalar\u0131n\u0131 ve Python programlama becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ipu\u00e7lar\u0131n\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken kodunuzu daha verimli hale getirmek i\u00e7in tuple&#039;lar\u0131 detayl\u0131ca \u00f6\u011frenmeye haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\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\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python&#039;da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)\" \/>\n<meta property=\"og:description\" content=\"Python&#039;da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak kritik \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada Python tuple (demet) devreye girer. Peki, Python&#039;da tuple nedir, listelerden fark\u0131 nelerdir ve hangi senaryolarda kullanmak daha avantajl\u0131d\u0131r? Bu makalede, tuple&#039;lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131n\u0131, performans faydalar\u0131n\u0131, ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulamalar\u0131n\u0131 ve Python programlama becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ipu\u00e7lar\u0131n\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken kodunuzu daha verimli hale getirmek i\u00e7in tuple&#039;lar\u0131 detayl\u0131ca \u00f6\u011frenmeye haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-15T23:31:23+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=\"30 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python&#8217;da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)\",\"datePublished\":\"2025-10-15T23:31:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/\"},\"wordCount\":4813,\"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\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/\",\"name\":\"Python'da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-15T23:31:23+00:00\",\"description\":\"Python'da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak kritik \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada Python tuple (demet) devreye girer. Peki, Python'da tuple nedir, listelerden fark\u0131 nelerdir ve hangi senaryolarda kullanmak daha avantajl\u0131d\u0131r? Bu makalede, tuple'lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131n\u0131, performans faydalar\u0131n\u0131, ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulamalar\u0131n\u0131 ve Python programlama becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ipu\u00e7lar\u0131n\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken kodunuzu daha verimli hale getirmek i\u00e7in tuple'lar\u0131 detayl\u0131ca \u00f6\u011frenmeye haz\u0131r m\u0131s\u0131n\u0131z?\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python&#8217;da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)\"}]},{\"@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'da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)","description":"Python'da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak kritik \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada Python tuple (demet) devreye girer. Peki, Python'da tuple nedir, listelerden fark\u0131 nelerdir ve hangi senaryolarda kullanmak daha avantajl\u0131d\u0131r? Bu makalede, tuple'lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131n\u0131, performans faydalar\u0131n\u0131, ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulamalar\u0131n\u0131 ve Python programlama becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ipu\u00e7lar\u0131n\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken kodunuzu daha verimli hale getirmek i\u00e7in tuple'lar\u0131 detayl\u0131ca \u00f6\u011frenmeye haz\u0131r m\u0131s\u0131n\u0131z?","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\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/","og_locale":"tr_TR","og_type":"article","og_title":"Python'da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)","og_description":"Python'da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak kritik \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada Python tuple (demet) devreye girer. Peki, Python'da tuple nedir, listelerden fark\u0131 nelerdir ve hangi senaryolarda kullanmak daha avantajl\u0131d\u0131r? Bu makalede, tuple'lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131n\u0131, performans faydalar\u0131n\u0131, ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulamalar\u0131n\u0131 ve Python programlama becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ipu\u00e7lar\u0131n\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken kodunuzu daha verimli hale getirmek i\u00e7in tuple'lar\u0131 detayl\u0131ca \u00f6\u011frenmeye haz\u0131r m\u0131s\u0131n\u0131z?","og_url":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-15T23:31:23+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"30 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python&#8217;da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)","datePublished":"2025-10-15T23:31:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/"},"wordCount":4813,"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\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/","url":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/","name":"Python'da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-15T23:31:23+00:00","description":"Python'da veri depolama denince akla gelen ilk yap\u0131lardan biri listeler olsa da, bazen verinin de\u011fi\u015fmemesini garanti alt\u0131na almak kritik \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada Python tuple (demet) devreye girer. Peki, Python'da tuple nedir, listelerden fark\u0131 nelerdir ve hangi senaryolarda kullanmak daha avantajl\u0131d\u0131r? Bu makalede, tuple'lar\u0131n de\u011fi\u015fmez yap\u0131s\u0131n\u0131, performans faydalar\u0131n\u0131, ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki uygulamalar\u0131n\u0131 ve Python programlama becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak ipu\u00e7lar\u0131n\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz. Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korurken kodunuzu daha verimli hale getirmek i\u00e7in tuple'lar\u0131 detayl\u0131ca \u00f6\u011frenmeye haz\u0131r m\u0131s\u0131n\u0131z?","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/pythonda-tuple-nedir-degismez-veri-koleksiyonlari-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python&#8217;da Tuple Nedir? De\u011fi\u015fmez Veri Koleksiyonlar\u0131 (5)"}]},{"@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\/31958","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=31958"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31958\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}