Menu

Python Fonksiyonları: def, return, Varsayılan ve Anahtar Kelime Argümanları

Python'da fonksiyonları nasıl tanımlayıp kullanırsın — parametreler, dönüş değerleri, varsayılan argümanlar, anahtar kelime argümanları ve kodu okunaklı tutan isimlendirme alışkanlıkları.

Fonksiyon, İsimlendirilmiş Bir Adımlar Bloğudur

Aynı birkaç satırı birden fazla yazdığını fark ettiğin her an — ya da küçük bir mantık parçasına isim vermek istediğinde — bir fonksiyon yazmaya hazırsın. Fonksiyonlar, bir Python programında karmaşıklığı yönetmek için ilk gerçek araçtır.

Temel biçim:

main.py
Output
Click Run to see the output here.

Şöyle açıklayalım:

  • def, bir fonksiyon tanımını başlatan anahtar kelimedir.
  • greet, fonksiyonun adıdır.
  • (name), parametre listesidir — fonksiyonun aldığı girdiler.
  • İki nokta üst üste, başlığı bitirir; altındaki girintili blok gövdedir.
  • greet("Ada") bir çağrıdır. Python, name'i "Ada"'ya bağlı olarak gövdeyi çalıştırır.

Fonksiyonlar çağrılana kadar hareketsiz kalır. Birini tanımlamak onu çalıştırmaz. Onu greet("Ada") ile çağırmak çalıştırır.

Parametreler ve Argümanlar

Parametre kelimesi, fonksiyon tanımının içindeki isimdir. Argüman kelimesi ise çağırdığında iletilen değerdir. Gündelik konuşmada büyük bir mesele değil, ama hata mesajlarını okurken fark yardımcı olur.

main.py
Output
Click Run to see the output here.

Burada base ve exponent parametrelerdir. 2 ve 10 argümandır. Python onları sırayla bağlar: ilk argümanı ilk parametreye vs.

return: Bir Değeri Geri Göndermek

print ekrana yazar. return ise bir değeri çağırana geri verir ki onu kullanabilsin:

main.py
Output
Click Run to see the output here.

return olmadan bir fonksiyon varsayılan olarak None döner:

main.py
Output
Click Run to see the output here.

return ayrıca fonksiyonu hemen sonlandırır. Ana mantığa geçmeden önce kenar durumlardan çıkmak için erken return'leri sık görürsün:

main.py
Output
Click Run to see the output here.

Erken return'ler, ana gövdenin if/else içinde derinlemesine iç içe olmasını engeller.

Varsayılan Argümanlar

Bir parametrenin, çağıran değer vermediğinde kullanılan bir varsayılan değeri olabilir:

main.py
Output
Click Run to see the output here.

Varsayılanlı tüm parametreler, varsayılansız parametrelerden sonra gelmelidir. def f(a, b=1, c): bir söz dizimi hatasıdır.

Değiştirilebilir varsayılan tuzağı

Bu, Python'un en ünlü tuzağıdır. İzle:

main.py
Output
Click Run to see the output here.

Her çağrının boş bir listeyle başlamasını beklersin. Onun yerine varsayılan liste çağrılar arasında paylaşılır ve elemanlar birikir. Python, varsayılanı fonksiyon tanımlandığında bir kez değerlendirir ve bu tek listeyi sonsuza kadar yeniden kullanır.

Güvenli kalıp, varsayılan olarak None kullanmak ve listeyi fonksiyon içinde oluşturmaktır:

main.py
Output
Click Run to see the output here.

Artık items geçmeyen her çağrı taze bir liste alır. Bu kural listeler, dict'ler, set'ler — değiştirilebilir her şey için geçerlidir.

Anahtar Kelime Argümanları

Argümanları konum yerine isimle geçirebilirsin. Bu, ortadaki parametreleri atlamana ve uzun çağrıları daha okunaklı yapmana izin verir:

main.py
Output
Click Run to see the output here.

Konumsal ve anahtar kelime argümanları karışabilir, ancak konumsallar önce gelmelidir:

main.py
Output
Click Run to see the output here.

Bir fonksiyonun üç-dört parametreden fazlası olduğunda, anahtar kelime argümanlarını tercih etmek çağrıları çok daha okunaklı yapar.

Sadece-Konumsal ve Sadece-Anahtar-Kelime Parametreler

Python, bazı parametreleri yalnızca konumla çağrılabilir olarak (/ ile) ya da yalnızca anahtar kelimeyle (* ile) işaretlemene izin verir:

main.py
Output
Click Run to see the output here.

Birinci günde bunlara ihtiyacın yok. API'ler tasarlarken ve çağrıcıların fonksiyonunu nasıl kullanacağını kısıtlamak istediğinde kullanışlı olurlar.

Docstring'ler ve İsimlendirme

Bir fonksiyonun içindeki ilk satır bir docstring olabilir — Python'un dokümantasyon olarak ele aldığı üç tırnaklı bir string:

main.py
Output
Click Run to see the output here.

help(), IDE ipuçları ve dokümantasyon üreteçleri gibi araçlar docstring'i otomatik olarak okur. Tek satırlık bir açıklama, hiçbir şey olmamasından çok daha iyidir.

Ve lütfen, isimlendirme hakkında düşün:

  • Fonksiyon adları fiil olmalı: fetch_profile, compute_total, is_valid.
  • lower_snake_case kullan.
  • Boolean döndüren fonksiyonlar genellikle is_, has_ veya can_ ile başlar.

İyi bir isim, çağrı noktasını yorum gerektirmeden kendi kendini açıklayıcı yapar.

Saf Fonksiyonlar Üzerinde Akıl Yürütmek Daha Kolaydır

Saf bir fonksiyon aynı girdi için aynı çıktıyı döndürür ve yan etkileri yoktur — global durumu değiştirmez, stdout'a yazmaz (debug dışında) ya da dosyalara yazmaz.

main.py
Output
Click Run to see the output here.

İkisinin de yeri var, ama yeniden kullanmak ve test etmek istediğin kodda, elinden geldiğince saf fonksiyonlara yönel.

Küçük Çalışan Bir Örnek

Varsayılanları, anahtar kelime argümanlarını ve return'ü birleştiren hızlı bir fonksiyon:

main.py
Output
Click Run to see the output here.

Sırada: Esnek Argüman Listeleri

Bazen bir fonksiyonun kaç argümanla çağrılacağını bilmezsin — ya da gelen argümanları olduğu gibi başka bir fonksiyona iletmek istersin. *args ve **kwargs bunu halleder. Sırada o var.

Sıkça Sorulan Sorular

Python'da bir fonksiyonu nasıl tanımlarım?

def anahtar kelimesini kullan; ardından fonksiyon adı, parametreler için parantezler ve iki nokta üst üste gelir. Altındaki girintili blok fonksiyonun gövdesidir. Örnek: def greet(name): print(f'Hi, {name}').

Python'da return ne yapar?

return, fonksiyonu çağırana bir değer geri gönderir. Açık bir return içermeyen bir fonksiyon otomatik olarak None döndürür. return çalıştığı anda fonksiyon hemen çıkar — aynı bloktaki sonraki kodlar atlanır.

Python'da varsayılan argümanlar nedir?

Varsayılan argümanlar, çağıran değer vermezse kullanılacak önceden ayarlanmış bir değere sahip olmasını sağlar. def greet(name='friend'):, argümansız greet() çağrısının 'friend' kullanacağı anlamına gelir. [] gibi değiştirilebilir varsayılanları asla kullanma — daha güvenli kalıp için aşağıya bak.

Coddy ile kodlamayı öğren

BAŞLA