[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-python-fonksiyonlari-parametre-donus-ve-ornek-kullanimlar":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},39042,"Python fonksiyonları: parametre, dönüş ve örnek kullanımlar","Bu makale, Python fonksiyonlarının temel kavramlarını, parametre türlerini (konumsal, anahtar, *args/**kwargs, konumsal-only ve keyword-only), dönüş değerlerini ve iyi uygulamaları örnek kodlarla açıklar.","\u003Ch2>Python fonksiyonlarına hızlı giriş\u003C/h2>\n\u003Cp>Python fonksiyonları, belirli bir görevi yerine getiren tekrar kullanılabilir kod bloklarıdır. Fonksiyonlar kodu düzenler, tekrarı azaltır ve programın mantığını parçalara ayırarak okunabilirliği artırır. Resmi Python belgelendirmesi fonksiyon tanımlarını ve ilgili özellikleri açıklar: \u003Ca href=\"https://docs.python.org/3.9/tutorial/controlflow.html\">Python Tutorial — More Control Flow Tools\u003C/a>.\u003C/p>\n\n\u003Ch2>Temel fonksiyon tanımı ve dönüşler\u003C/h2>\n\u003Cp>Bir fonksiyon 'def' anahtar kelimesiyle tanımlanır. İsteğe bağlı olarak docstring (belgeleme dizesi) eklenebilir ve 'return' ifadesi ile değer döndürülebilir. 'return' yoksa fonksiyon None döner.\u003C/p>\n\n\u003Ch3>Örnek 1 — Basit selamlama\u003C/h3>\n\u003Cp>def selamla(isim):\u003Cbr>    \"\"\"Girilen isimle Türkçe selamlama döndürür.\"\"\"\u003Cbr>    return f\"Merhaba, {isim}!\"\u003Cbr>\u003Cbr>print(selamla(\"Ayşe\"))  # Merhaba, Ayşe!\u003C/p>\n\n\u003Ch3>Birden fazla değer döndürmek\u003C/h3>\n\u003Cp>Fonksiyonlar birden fazla değeri virgülle ayırarak döndürebilir; Python bu değerleri otomatik olarak bir tuple içinde paketler.\u003C/p>\n\u003Cp>def bolum_ve_kalan(a, b):\u003Cbr>    q = a // b\u003Cbr>    r = a % b\u003Cbr>    return q, r\u003Cbr>\u003Cbr>q, r = bolum_ve_kalan(7, 3)  # q = 2, r = 1\u003C/p>\n\n\u003Ch2>Parametre türleri ve örnekleri\u003C/h2>\n\u003Cp>Python, farklı çağrı stillerini destekler: konumsal (positional), anahtar kelime (keyword), varsayılan (default), değişken uzunlukta argümanlar (*args, **kwargs), anahtar-kelime-only ve konumsal-only parametreler.\u003C/p>\n\n\u003Ch3>Konumsal ve anahtar kelime argümanlar\u003C/h3>\n\u003Cp>def carp(a, b):\u003Cbr>    return a * b\u003Cbr>\u003Cbr>carp(2, 3)     # konumsal çağrı\u003Cbr>carp(b=3, a=2) # anahtar kelime ile çağrı\u003C/p>\n\n\u003Ch3>Varsayılan değerler\u003C/h3>\n\u003Cp>Varsayılan argümanlar fonksiyon çağrılırken belirtilmezse kullanılır. Ancak varsayılan olarak değiştirilebilir bir nesne (ör. list) kullanmak, paylaşılan durumlara yol açabilir; yaygın çözüm None kullanıp içinde yeni bir nesne oluşturmaktır.\u003C/p>\n\u003Cp>def ekle(item, items=None):\u003Cbr>    if items is None:\u003Cbr>        items = []\u003Cbr>    items.append(item)\u003Cbr>    return items\u003Cbr>\u003Cbr>print(ekle(1))  # [1]\u003C/p>\n\n\u003Ch3>*args ve **kwargs: değişken sayıda argüman\u003C/h3>\n\u003Cp>*args pozisyonel, **kwargs anahtar kelime argümanlarını toplar:\u003C/p>\n\u003Cp>def topla(*sayilar):\u003Cbr>    toplam = 0\u003Cbr>    for s in sayilar:\u003Cbr>        toplam += s\u003Cbr>    return toplam\u003Cbr>\u003Cbr>print(topla(1, 2, 3))  # 6\u003C/p>\n\u003Cp>def yazdir(**kwargs):\u003Cbr>    for k, v in kwargs.items():\u003Cbr>        print(f\"{k} = {v}\")\u003Cbr>\u003Cbr>yazdir(ad=\"Ahmet\", yas=30)\u003C/p>\n\n\u003Ch3>Anahtar-kelime-only parametreler\u003C/h3>\n\u003Cp>Fonksiyon imzasında '*' kullandığınızda, '*' sonrasında gelen parametreler yalnızca anahtar kelime ile verilebilir:\u003C/p>\n\u003Cp>def kaydet(dosya, *, overwrite=False):\u003Cbr>    if overwrite:\u003Cbr>        print(\"Üzerine yazılıyor\")\u003Cbr>    else:\u003Cbr>        print(\"Yeni kaydedilecek\")\u003Cbr>\u003Cbr>kaydet(\"rapor.txt\", overwrite=True)\u003C/p>\n\n\u003Ch3>Konumsal-only parametreler ('/' kullanımı)\u003C/h3>\n\u003Cp>Python 3.8'de PEP 570 ile gelen '/' işareti, imza içindeki konumun solundaki parametreleri yalnızca konumsal olarak kullanmaya zorlar. Bu, fonksiyon arayüzünü netleştirmek için faydalıdır; detaylar için Python 3.8 duyurusu okunabilir: \u003Ca href=\"https://docs.python.org/tr/3.13/whatsnew/3.8.html\">Python 3.8'daki Yenilikler\u003C/a>.\u003C/p>\n\u003Cp>Örnek:\u003C/p>\n\u003Cp>def islemler(x, y, /, scale=1):\u003Cbr>    return (x + y) * scale\u003Cbr>\u003Cbr>islemler(2, 3)        # geçerli\u003Cbr>islemler(x=2, y=3)    # TypeError: x ve y yalnızca konumsal olmalı\u003C/p>\n\n\u003Ch2>İyi uygulamalar (checklist)\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Docstring\u003C/strong>: Her fonksiyon için kısa bir açıklama yazın.\u003C/li>\n\u003Cli>\u003Cstrong>Tek sorumluluk\u003C/strong>: Fonksiyonlar tek bir işi yapacak şekilde küçük tutun.\u003C/li>\n\u003Cli>\u003Cstrong>Parametre düzeni\u003C/strong>: Konumsal-only / normal / anahtar-kelime-only şeklinde tutarlı bir sıra kullanın.\u003C/li>\n\u003Cli>\u003Cstrong>Varsayılan değerler\u003C/strong>: Değiştirilebilir nesneler için None kullanın ve fonksiyon içinde yeni nesne oluşturun.\u003C/li>\n\u003Cli>\u003Cstrong>Tip ipuçları\u003C/strong>: Type hints, okunabilirliği ve araç desteğini artırır; zorunlu değildir.\u003C/li>\n\u003Cli>\u003Cstrong>Basit testler\u003C/strong>: Fonksiyonlar için küçük assert testleri yazın.\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Adım adım: küçük bir fonksiyon yazma ve test etme\u003C/h2>\n\u003Col>\n\u003Cli>İş gereksinimini belirleyin: neyi hesaplayacak veya hangi dönüşü sağlayacak?\u003C/li>\n\u003Cli>Fonksiyon adını ve parametrelerini belirleyin, kısa bir docstring yazın.\u003C/li>\n\u003Cli>Fonksiyonu yazın ve tip ipuçları ekleyin (isteğe bağlı).\u003C/li>\n\u003Cli>Basit örneklerle çalıştırıp beklenen sonucu doğrulayın (print veya assert kullanın).\u003C/li>\n\u003Cli>Edge durumları için testler ekleyin (sıfıra bölme, boş listeler vb.).\u003C/li>\n\u003C/ol>\n\n\u003Cp>Örnek: ortalama hesaplama ve basit test\u003C/p>\n\u003Cp>def ortalama(sayilar):\u003Cbr>    \"\"\"Bir sayılar listesi alır ve ortalamasını döner.\"\"\"\u003Cbr>    if not sayilar:\u003Cbr>        return None\u003Cbr>    return sum(sayilar) / len(sayilar)\u003Cbr>\u003Cbr>assert ortalama([1, 2, 3]) == 2.0\u003Cbr>assert ortalama([]) is None\u003C/p>\n\n\u003Ch2>Yüksek düzey örnekler\u003C/h2>\n\u003Cp>Fonksiyonlar başka fonksiyonları argüman olarak alabilir veya fonksiyon döndürebilir (higher-order functions):\u003C/p>\n\u003Cp>def apply_twice(f, x):\u003Cbr>    return f(f(x))\u003Cbr>\u003Cbr>print(apply_twice(lambda v: v + 3, 5))  # 11\u003C/p>\n\n\u003Ch2>Kaynaklar ve ileri okuma\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://docs.python.org/3.9/tutorial/controlflow.html\">Python Tutorial — More Control Flow Tools\u003C/a> (resmi belge, fonksiyon tanımları ve kontrol akışı açıklamaları).\u003C/li>\n\u003Cli>\u003Ca href=\"https://docs.python.org/tr/3.13/whatsnew/3.8.html\">Python 3.8'deki Yenilikler\u003C/a> (konumsal-only parametreler için '/').\u003C/li>\n\u003C/ul>\n\n\u003Ch2>Kısa özet\u003C/h2>\n\u003Cp>Fonksiyonlar Python'da kodu organize etmenin temel yoludur. Parametre türlerini (konumsal, anahtar, *args, **kwargs), varsayılan değerleri ve dönüş davranışlarını kavrayarak daha okunabilir ve bakım yapılabilir kod yazabilirsiniz. Resmi belgeler en güncel davranış farklarını detaylandırır; sürüm farklarına dikkat edin.\u003C/p>","Python Fonksiyon Örnekleri: Parametreler ve Dönüşler ile Adı","Python fonksiyonlarının nasıl tanımlandığını, parametre türlerini (*args, **kwargs, konumsal/anahtar kelime), varsayılan değerleri ve dönüşleri örneklerle anlat","Python Fonksiyon Örnekleri, python kod snippetleri, fonksiyon örnekleri, adım adım programlama öğrenme, slug","python-fonksiyonlari-parametre-donus-ve-ornek-kullanimlar","2026-10-11T14:52:02.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/526fcb100e76db057d5eba41aa884fb8.jpg","/media/blog/526fcb100e76db057d5eba41aa884fb8_thumb.jpg","/media/blog/526fcb100e76db057d5eba41aa884fb8.webp","/media/blog/526fcb100e76db057d5eba41aa884fb8_thumb.webp",null,{"minutes":30,"wordCount":31,"imageCount":32,"formatted":33},4,637,0,"4 dk okuma süresi","/blog/python-fonksiyon-ornekleri/python-fonksiyonlari-parametre-donus-ve-ornek-kullanimlar",[],["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/526fcb100e76db057d5eba41aa884fb8.jpg",{"hid":64,"property":64,"content":65},"og:url","https://kodogreniyorum.com/blog/python-fonksiyon-ornekleri/python-fonksiyonlari-parametre-donus-ve-ornek-kullanimlar",{"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-donus-ve-ornek-kullanimlar",["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":30,"name":7,"item":65}]