İçeriğe geç
Educora
Orta17 dk9 / 42

Fonksiyonlar

Kendi fonksiyonlarını yaz: parametreler, return ile değer döndürme, varsayılan değerler ve değişken kapsamı.

Kendini test et
Bu derste öğreneceklerin
  • def ile fonksiyon tanımlamak ve onu çağırmak
  • return ile sonuç döndürmek ve bunun print'ten farkını açıklamak
  • Varsayılan değerli parametreleri ve adlandırılmış argümanları kullanmak
  • Yerel ve genel (global) değişkenleri ayırt etmek

Programının beş yerinde ortalama hesapladığını ve her seferinde aynı üç satırı kopyaladığını düşün. Sonra hesapta bir hata buluyorsun ve şimdi onu beş yerde düzeltmen gerekiyor! Fonksiyonlar bu sorunu çözer: kodu bir kez yazar, ona bir ad verir ve istediğin kadar çağırırsın. print(), len() ve sum() zaten tanıdığın fonksiyonlardır; şimdi kendi fonksiyonlarını oluşturacaksın.

Fonksiyon tanımlamak ve çağırmak

Fonksiyon def sözcüğüyle tanımlanır; ardından fonksiyonun adı, parantez içinde parametreler ve iki nokta gelir. Fonksiyonun gövdesi girintili bloktur. Tanımlanan bir fonksiyon kendi başına hiçbir şey yapmaz; yalnızca adıyla çağrıldığında çalışır.

Python
def greet(name):
    print(f'Hello, {name}!')

greet('Aysel')
greet('Murad')
▸ Beklenen çıktı
Hello, Aysel!
Hello, Murad!
Tanım
Parametre ve argüman

Parametre, fonksiyon tanımında yazılan addır (name). Argüman ise fonksiyon çağrılırken o parametreye verilen gerçek değerdir ('Aysel').

return: sonucu döndürmek

Çoğu zaman bir fonksiyondan sonuç bekleriz. return fonksiyonun çalışmasını bitirir ve bir değeri çağrıldığı yere geri gönderir. Bu değeri bir değişkene kaydedebilir, başka bir hesapta kullanabilir ya da yazdırabilirsin. Üç tırnak içindeki ilk satır bir belge dizisidir (docstring): fonksiyonun ne yaptığını kısaca açıklar.

Python
def rectangle_area(width, height):
    """Return the area of a rectangle."""
    return width * height

room = rectangle_area(4, 3.5)
print('Room area:', room)
print('Two rooms:', rectangle_area(4, 3.5) + rectangle_area(3, 3))
▸ Beklenen çıktı
Room area: 14.0
Two rooms: 23.0

Yeni başlayanlar print ile return'ü sık sık karıştırır. print değeri yalnızca ekrana yazar, return ise onu programa geri verir. return içermeyen bir fonksiyon varsayılan olarak None döndürür:

Python
def add_print(a, b):
    print(a + b)

def add_return(a, b):
    return a + b

x = add_print(2, 3)
y = add_return(2, 3)
print('x =', x)
print('y =', y)
▸ Beklenen çıktı
5
x = None
y = 5
add_print ekrana 5 yazdı ama x'e hiçbir şey döndürmedi.
F = C · 9/5 + 32F = C · 9/5 + 32
burada:
  • FFahrenheit derecesi cinsinden sıcaklık
  • CSantigrat (Celsius) derecesi cinsinden sıcaklık

Bu formülü bir fonksiyona dönüştürelim

Python
def celsius_to_fahrenheit(c):
    return c * 9 / 5 + 32

for t in (0, 25, 100):
    print(f'{t} °C = {celsius_to_fahrenheit(t)} °F')
▸ Beklenen çıktı
0 °C = 32.0 °F
25 °C = 77.0 °F
100 °C = 212.0 °F

Varsayılan değerler ve adlandırılmış argümanlar

Bir parametreye varsayılan değer verilebilir: çağrıda argüman verilmezse bu değer kullanılır. Argümanları adlarıyla da verebilirsin; o zaman sıraları önemli olmaz ve kod daha kolay okunur.

Python
def final_price(price, discount=0):
    return price - price * discount / 100

print(final_price(80))
print(final_price(80, 25))
print(final_price(discount=10, price=50))
▸ Beklenen çıktı
80.0
60.0
45.0

Bir fonksiyon, demet döndürerek birden fazla sonucu aynı anda verebilir. Çağırırken bu demeti hemen değişkenlere açarız:

Python
def min_max(numbers):
    return min(numbers), max(numbers)

low, high = min_max([12, 5, 27, 9])
print(low, high)
▸ Beklenen çıktı
5 27

Değişkenlerin kapsamı

Bir fonksiyonun içinde oluşturulan değişken yereldir: yalnızca fonksiyon çalışırken vardır ve dışarıdan görünmez. Fonksiyonların dışında oluşturulan değişken ise geneldir (global). Fonksiyon içinde aynı adlı bir değişkene değer vermek genel değişkeni değiştirmez; yeni, yerel bir değişken oluşturur.

Python
x = 10

def change():
    x = 5
    print('inside:', x)

change()
print('outside:', x)
▸ Beklenen çıktı
inside: 5
outside: 10
Alıştırma

Bir liste alıp elemanlarının aritmetik ortalamasını döndüren average(numbers) fonksiyonunu yaz. Başlangıç kodundaki iki print satırı onu dener; onları değiştirme.

Alıştırma · Python
# define average(numbers) here

print(average([4, 5, 3, 5]))
print(average([10, 20]))
▸ Beklenen çıktı
4.25
15.0
Alıştırma

check(score, pass_mark=50) fonksiyonunu yaz: puan geçme notundan düşük değilse 'passed', aksi hâlde 'failed' döndürsün. pass_mark verilmezse 50 kabul edilir. Başlangıç kodundaki üç çağrıyı değiştirme.

Alıştırma · Python
# define check(score, pass_mark=50) here

print(check(72))
print(check(45))
print(check(45, 40))
▸ Beklenen çıktı
passed
failed
passed

Önemli noktalar

  • Fonksiyon def ad(parametreler): ile tanımlanır ve adıyla çağrılır.
  • return değeri çağrıldığı yere döndürür; return yoksa sonuç None olur.
  • print ekrana yazar, return ise değeri programa verir.
  • Varsayılan değerler (discount=0) bir argümanı isteğe bağlı yapar.
  • Fonksiyon içindeki değişkenler yereldir ve dışarıdan görünmez.

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
Python'da fonksiyon hangi sözcükle tanımlanır?