defile fonksiyon tanımlamak ve onu çağırmakreturnile sonuç döndürmek ve bununprint'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.
def greet(name):
print(f'Hello, {name}!')
greet('Aysel')
greet('Murad')▸ Beklenen çıktı
Hello, Aysel! Hello, Murad!
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.
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:
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.- FFahrenheit derecesi cinsinden sıcaklık
- CSantigrat (Celsius) derecesi cinsinden sıcaklık
Bu formülü bir fonksiyona dönüştürelim
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.
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:
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.
x = 10
def change():
x = 5
print('inside:', x)
change()
print('outside:', x)▸ Beklenen çıktı
inside: 5 outside: 10
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.
# define average(numbers) here
print(average([4, 5, 3, 5]))
print(average([10, 20]))▸ Beklenen çıktı
4.25 15.0
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.
# 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. returndeğeri çağrıldığı yere döndürür;returnyoksa sonuçNoneolur.printekrana yazar,returnise 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.