[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-python-fonksiyonlari-parametre-varsayilan-ve-donus-ornekleri":3},{"dataItem":4,"heading":36,"metaData":38,"schema":81},["Reactive",5],{"id":6,"title":7,"summary":8,"content":9,"seo_title":10,"seo_description":11,"seo_keywords":12,"slug":13,"createdAt":14,"updatedAt":14,"blog_categories":15,"authors":19,"image":24,"thumb":25,"image_webp":26,"thumb_webp":27,"rating":28,"heading_title":7,"heading_sub_title":17,"readingTime":29,"url":34,"comments":35,"meta_cover":24},27367,"Python Fonksiyonları: Parametre, Varsayılan ve Dönüş Örnekleri","Bu rehberde Python fonksiyonlarının temel kavramlarını, parametre türlerini, varsayılan değer kullanımını, dönüş değerlerini ve lambda ifadelerini pratik örneklerle öğrenirsiniz.","\u003Ch2>Giriş\u003C/h2>\n\u003Cp>Python'da fonksiyonlar, tekrar kullanılabilir kod blokları oluşturmanızı sağlar. Bu yazıda fonksiyon tanımı, konumsal ve anahtar kelime parametreleri, varsayılan değerler, \u003Cstrong>*args\u003C/strong>/\u003Cstrong>**kwargs\u003C/strong>, dönüş değerleri ve lambda ifadeleri gibi temel konuları pratik örneklerle ele alacağız. Örnekler hem yeni başlayanlara hem de temel uygulama bilgisi olanlara yönelik olup resmi belgeye dayanan açıklamalar ve kullanışlı ipuçları içerir.\u003C/p>\n\n\u003Ch2>Fonksiyon Tanımı: def ve temel sözdizimi\u003C/h2>\n\u003Cp>Python'da fonksiyon tanımlamak için \u003Cstrong>def\u003C/strong> anahtar kelimesi kullanılır. Resmi Python belgelerinde fonksiyon tanımlarının sözdizimi ve kapsamı anlatılmıştır; örneğin tanım ve bileşik ifadelerle ilgili bölüm şu kaynağa bakılabilir: \u003Ca href=\"https://docs.python.org/tr/3/reference/compound_stmts.html\">Python resmi dokümantasyonu — Compound statements\u003C/a> (\u003Cem>def\u003C/em> ile ilgili kısım).\u003C/p>\n\n\u003Cp>Basit bir örnek:\u003C/p>\n\u003Cblockquote>def selamla(isim):\u003Cbr>    return f\"Merhaba, {isim}!\"\u003Cbr>\u003Cbr>print(selamla(\"Ali\"))  # Merhaba, Ali!\u003C/blockquote>\n\n\u003Cp>Bu örnekte \u003Cstrong>selamla\u003C/strong> fonksiyonu bir parametre alır ve \u003Cstrong>return\u003C/strong> ifadesiyle bir değer döndürür. Eğer bir fonksiyon \u003Cstrong>return\u003C/strong> ifadesi içermezse, çağrıldığında \u003Cstrong>None\u003C/strong> döner; bu davranış da Python belgelerinde yer almaktadır.\u003C/p>\n\n\u003Ch2>Parametre Türleri ve Geçiş Yöntemleri\u003C/h2>\n\u003Cp>Fonksiyonlara argüman geçişi birkaç şekilde yapılabilir. Temel tipler şunlardır:\u003C/p>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Konumsal (positional) argümanlar:\u003C/strong> Parametrelerin sırasına göre verilir.\u003C/li>\n  \u003Cli>\u003Cstrong>Anahtar kelime (keyword) argümanlar:\u003C/strong> Parametre adı belirtilerek verilir; böylece sıra önemi ortadan kalkar.\u003C/li>\n  \u003Cli>\u003Cstrong>Varsayılan (default) parametreler:\u003C/strong> Fonksiyon tanımında bir parametreye başlangıç değeri atanabilir; çağırırken bu değer atlanabilir.\u003C/li>\n  \u003Cli>\u003Cstrong>*args / **kwargs:\u003C/strong> Değişken sayıda konumsal veya anahtar kelime argümanı almak için kullanılır.\u003C/li>\n\u003C/ul>\n\n\u003Ch3>Konumsal ve Anahtar Kelime Örneği\u003C/h3>\n\u003Cblockquote>def carp(a, b):\u003Cbr>    return a * b\u003Cbr>\u003Cbr>print(carp(2, 3))       # konumsal: 6\u003Cbr>print(carp(b=3, a=2))   # anahtar kelime: 6\u003C/blockquote>\n\n\u003Cp>Anahtar kelime argümanları, özellikle parametre sayısı arttığında kodun okunabilirliğini artırır.\u003C/p>\n\n\u003Ch3>Varsayılan Parametreler\u003C/h3>\n\u003Cp>Varsayılan değerler fonksiyon tanımında verilir ve çağırırken bu parametre atlanırsa varsayılan değer kullanılır:\u003C/p>\n\u003Cblockquote>def selamla(isim, mesaj=\"Merhaba\"):\u003Cbr>    return f\"{mesaj}, {isim}!\"\u003Cbr>\u003Cbr>print(selamla(\"Ayşe\"))                  # Merhaba, Ayşe!\u003Cbr>print(selamla(\"Mehmet\", mesaj=\"Selam\"))  # Selam, Mehmet!\u003C/blockquote>\n\n\u003Cp>Ancak burada dikkat edilmesi gereken bir nokta vardır: \u003Cstrong>mutable\u003C/strong> (değiştirilebilir) tiplerle varsayılan değer kullanımı istenmeyen sonuçlara yol açabilir. Örneğin:\u003C/p>\n\u003Cblockquote>def ekle(x, lst=[]):\u003Cbr>    lst.append(x)\u003Cbr>    return lst\u003Cbr>\u003Cbr>print(ekle(1))  # [1]\u003Cbr>print(ekle(2))  # [1, 2] — önceki çağrıdan kalan listeyi kullanır\u003C/blockquote>\n\n\u003Cp>Bu davranışın nedeni, varsayılan değerin fonksiyon tanımlandığında oluşturulması ve tüm çağrılarda aynı nesnenin paylaşılmasıdır. Bu durumu önlemek için yaygın çözüm şu şekildedir:\u003C/p>\n\u003Cblockquote>def ekle(x, lst=None):\u003Cbr>    if lst is None:\u003Cbr>        lst = []\u003Cbr>    lst.append(x)\u003Cbr>    return lst\u003C/blockquote>\n\n\u003Cp>Bu kalıp, fonksiyonun her çağrısında yeni bir liste oluşturulmasını sağlar. Mutability konusunda resmi türler belgesi ek bilgi için yararlıdır: \u003Ca href=\"https://docs.python.org/tr/3.8/library/stdtypes.html\">Gömülü türler (stdtypes)\u003C/a>.\u003C/p>\n\n\u003Ch3>*args ve **kwargs\u003C/h3>\n\u003Cp>Fonksiyonların esnek argüman alması gerektiğinde \u003Cstrong>*args\u003C/strong> konumsal, \u003Cstrong>**kwargs\u003C/strong> ise anahtar kelime argümanlarını toplamak için kullanılır:\u003C/p>\n\u003Cblockquote>def ortalama(*sayılar):\u003Cbr>    return sum(sayılar) / len(sayılar) if sayılar else 0\u003Cbr>\u003Cbr>print(ortalama(2, 4, 6))  # 4.0\u003Cbr>\u003Cbr>def yazdir(**bilgiler):\u003Cbr>    for k, v in bilgiler.items():\u003Cbr>        print(k, v)\u003Cbr>\u003Cbr>yazdir(ad=\"Ayşe\", yas=30)\u003C/blockquote>\n\n\u003Cp>Bu kavramlar, fonksiyonların değişken sayıda veri ile çalışmasını kolaylaştırır.\u003C/p>\n\n\u003Ch2>Dönüş Değerleri\u003C/h2>\n\u003Cp>Bir fonksiyon tek bir değer döndürebilir; fakat Python'da birden fazla değer döndürmek istediğinizde genellikle bir \u003Cstrong>tuple\u003C/strong> döndürürsünüz ve çağıran taraf bunu unpack edebilir.\u003C/p>\n\u003Cblockquote>def istatistik(nums):\u003Cbr>    return min(nums), max(nums), sum(nums)/len(nums)\u003Cbr>\u003Cbr>mini, maxi, ort = istatistik([1, 2, 3, 4, 5])\u003Cbr>print(mini, maxi, ort)  # 1 5 3.0\u003C/blockquote>\n\n\u003Cp>Fonksiyon içinde açıkça \u003Cstrong>return\u003C/strong> kullanılmadığında, fonksiyon \u003Cstrong>None\u003C/strong> döndürür. Bu davranış resmi belgelerde belirtilir ve fonksiyon tasarımında açık dönüşler kullanmak kodun anlaşılmasını kolaylaştırır.\u003C/p>\n\n\u003Ch2>Lambda İfadeleri (Anonim Fonksiyonlar)\u003C/h2>\n\u003Cp>Lambda ifadeleri tek satırlık anonim fonksiyonlar tanımlamak için kullanılır. Resmi belgelerde lambda ve fonksiyonel kullanımın sözdizimi ile ilgili açıklamalar yer alır; yerel başvuru için Python'un fonksiyonlarla ilgili dokümanlarına göz atabilirsiniz: \u003Ca href=\"https://docs.python.org/tr/3.12/library/functions.html\">Gömülü Fonksiyonlar — Python belgeleri\u003C/a>.\u003C/p>\n\n\u003Cblockquote>topla = lambda x, y=1: x + y\u003Cbr>print(topla(3))     # 4\u003Cbr>print(topla(3, 2))  # 5\u003C/blockquote>\n\n\u003Cp>Lambda ifadeleri kısa görevler için uygundur (ör. \u003Cstrong>map\u003C/strong>, \u003Cstrong>filter\u003C/strong>, \u003Cstrong>sorted\u003C/strong> ile birlikte). Uzun veya karmaşık işlem yapan fonksiyonlar için normal \u003Cstrong>def\u003C/strong> kullanmak okunabilirlik açısından genellikle daha iyidir.\u003C/p>\n\n\u003Ch2>İyi Uygulamalar — Hızlı Kontrol Listesi\u003C/h2>\n\u003Cul>\n  \u003Cli>Her fonksiyona kısa ama açıklayıcı bir ad verin.\u003C/li>\n  \u003Cli>Fonksiyonlar tek bir sorumluluk yapsın (single responsibility).\u003C/li>\n  \u003Cli>Mutable tipleri varsayılan parametre olarak kullanmayın; \u003Cem>None\u003C/em> kalıbını tercih edin.\u003C/li>\n  \u003Cli>Gerekli yerlerde tür ipuçları (type hints) ve docstring ekleyin.\u003C/li>\n  \u003Cli>Karmaşık dönüşler için tuple yerine isimlendirilmiş veri yapılarını (örn. dataclass veya dict) değerlendirin.\u003C/li>\n  \u003Cli>Unit test yazın; küçük yardımcı fonksiyonları ayrı test edin.\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Küçük Uygulama Örneği: Basit Rapor Fonksiyonu\u003C/h2>\n\u003Cp>Aşağıda bir listenin özetini döndüren küçük bir fonksiyon örneği vardır. Hem zorunlu hem de opsiyonel parametreleri gösterir:\u003C/p>\n\u003Cblockquote>def ozet(numbers, round_digits=2, include_count=True):\u003Cbr>    \"\"\"numbers: sayılar listesi. round_digits: yuvarlama hassasiyeti.\"\"\"\u003Cbr>    if not numbers:\u003Cbr>        return None\u003Cbr>    hasil = {\u003Cbr>        'min': min(numbers),\u003Cbr>        'max': max(numbers),\u003Cbr>        'avg': round(sum(numbers)/len(numbers), round_digits)\u003Cbr>    }\u003Cbr>    if include_count:\u003Cbr>        hasil['count'] = len(numbers)\u003Cbr>    return hasil\u003Cbr>\u003Cbr>print(ozet([1, 2, 3, 4, 5]))\u003C/blockquote>\n\n\u003Cp>Bu örnek hem dönüş olarak dict kullanımı hem de opsiyonel parametre yönetimini gösterir.\u003C/p>\n\n\u003Ch2>Kaynaklar ve İleri Okuma\u003C/h2>\n\u003Cul>\n  \u003Cli>\u003Ca href=\"https://docs.python.org/tr/3/reference/compound_stmts.html\">Compound statements — Python resmi dokümantasyonu\u003C/a> (def ve function statement açıklamaları).\u003C/li>\n  \u003Cli>\u003Ca href=\"https://docs.python.org/tr/3.12/library/functions.html\">Gömülü Fonksiyonlar — Python kütüphane dokümantasyonu\u003C/a> (lambda ve yerleşik fonksiyonlar hakkında bilgi).\u003C/li>\n  \u003Cli>\u003Ca href=\"https://docs.python.org/tr/3.8/library/stdtypes.html\">Gömülü Türler — stdtypes\u003C/a> (liste, tuple, dict gibi tiplerin davranışları hakkında referans).\u003C/li>\n\u003C/ul>\n\n\u003Chr>\n\n\u003Ch2>Sık Sorulan Sorular (SSS)\u003C/h2>\n\n\u003Ch3>Fonksiyonlar nasıl test edilmelidir?\u003C/h3>\n\u003Cp>Her fonksiyon için küçük birim testleri yazın. pytest veya unittest kullanarak giriş-çıkış örneklerini otomatik testlere dönüştürün. Edge-case (boş liste, None, hata durumları) senaryolarını da test edin.\u003C/p>\n\n\u003Ch3>Mutable varsayılan parametre neden sorun yaratıyor?\u003C/h3>\n\u003Cp>Çünkü varsayılan değer fonksiyon tanımlanırken bir kez oluşturulur ve tüm çağrılarda paylaşılır; bu da beklenmeyen veri birikimine yol açabilir. Çözüm olarak varsayılan \u003Cem>None\u003C/em> kullanıp içte yeni bir liste/dict oluşturmak güvenlidir.\u003C/p>\n\n\u003Ch3>Lambda mı, def mi tercih etmeliyim?\u003C/h3>\n\u003Cp>Kısa, tek ifadeli fonksiyonlar için lambda uygundur; ancak fonksiyon karmaşıklaştığında veya docstring/type hint gerektiğinde \u003Cstrong>def\u003C/strong> tercih edin.\u003C/p>\n\n\u003Ch3>Bir fonksiyondan birden fazla değer döndürebilir miyim?\u003C/h3>\n\u003Cp>Evet. Python'da bir kaç değeri virgülle ayırarak döndürebilirsiniz; çağıran taraf bunları tuple olarak alır ve isterseniz unpack edebilirsiniz.\u003C/p>\n","Python Fonksiyon Örnekleri — Parametreler, Varsayılanlar veD","Pratik örneklerle Python fonksiyonlarının tanımlanışı, parametre geçişi, varsayılan değer kullanımı ve dönüş değerleri hakkında adım adım rehber.","Python Fonksiyon Örnekleri, python def örnekleri, parametre geçişi python, lambda örnekleri, fonksiyon dönüş değerleri, varsayılan parametre python","python-fonksiyonlari-parametre-varsayilan-ve-donus-ornekleri","2026-04-12T16:40:49.000Z",{"id":16,"title":17,"slug":18},208,"Python Fonksiyon Örnekleri","python-fonksiyon-ornekleri",{"id":20,"name":21,"nickname":22,"slug":23},92,"Burak Demirtaş","CodeMentor","burak-demirtas","/media/blog/8d3852561ad0bfb1a297a498e02d9c2a.jpg","/media/blog/8d3852561ad0bfb1a297a498e02d9c2a_thumb.jpg","/media/blog/8d3852561ad0bfb1a297a498e02d9c2a.webp","/media/blog/8d3852561ad0bfb1a297a498e02d9c2a_thumb.webp",null,{"minutes":30,"wordCount":31,"imageCount":32,"formatted":33},5,893,0,"5 dk okuma süresi","/blog/python-fonksiyon-ornekleri/python-fonksiyonlari-parametre-varsayilan-ve-donus-ornekleri",[],["Reactive",37],{"title":7,"subTitle":17,"image":24},["Reactive",39],{"title":10,"meta":40,"link":75},[41,43,45,48,51,54,57,60,63,66,69,71,73],{"hid":42,"name":42,"content":11},"description",{"hid":44,"name":44,"content":12},"keywords",{"hid":46,"name":46,"content":47},"author","Başlangıç Seviyesi Kod & Snippet Rehberi",{"hid":49,"name":49,"content":50},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"hid":52,"property":52,"content":53},"og:type","website",{"hid":55,"property":55,"content":56},"og:title","Başlangıç Kod & Snippet Rehberi | KodÖğreniyorum",{"hid":58,"property":58,"content":59},"og:description","Yeni başlayanlara yönelik kısa kod örnekleri, snippet'ler ve adım adım alıştırmalar. Hızlı uygulamalarla temel programlama mantığını pekiştir.",{"hid":61,"property":61,"content":62},"og:image","https://kodogreniyorum.com/media/blog/8d3852561ad0bfb1a297a498e02d9c2a.jpg",{"hid":64,"property":64,"content":65},"og:url","https://kodogreniyorum.com/blog/python-fonksiyon-ornekleri/python-fonksiyonlari-parametre-varsayilan-ve-donus-ornekleri",{"hid":67,"name":67,"content":68},"twitter:card","summary_large_image",{"hid":70,"name":70,"content":56},"twitter:title",{"hid":72,"name":72,"content":59},"twitter:description",{"hid":74,"name":74,"content":62},"twitter:image",[76,78],{"rel":77,"href":65},"canonical",{"rel":79,"href":80},"amphtml","https://amp.kodogreniyorum.com/blog/python-fonksiyon-ornekleri/python-fonksiyonlari-parametre-varsayilan-ve-donus-ornekleri",["Reactive",82],{"@context":83,"@graph":84},"https://schema.org",[85,98],{"@type":86,"headline":10,"image":62,"author":87,"publisher":90,"datePublished":14,"dateModified":14,"mainEntityOfPage":96,"description":11},"BlogPosting",{"@type":88,"name":21,"url":89},"Person","https://kodogreniyorum.com/yazarlar/burak-demirtas",{"@type":91,"name":47,"logo":92},"Organization",{"@type":93,"url":94,"width":95,"height":95},"ImageObject","https://kodogreniyorum.com/img/icons/favicon.png",32,{"@type":97,"@id":65},"WebPage",{"@type":99,"itemListElement":100},"BreadcrumbList",[101,106,110,113],{"@type":102,"position":103,"name":104,"item":105},"ListItem",1,"Ana Sayfa","https://kodogreniyorum.com",{"@type":102,"position":107,"name":108,"item":109},2,"Blog","https://kodogreniyorum.com/blog",{"@type":102,"position":111,"name":17,"item":112},3,"https://kodogreniyorum.com/blog/python-fonksiyon-ornekleri",{"@type":102,"position":114,"name":7,"item":65},4]