# Şu ana kadar pek çok ilginç şey öğrendik. Bunlara çeşitli komutlar da dahildi. Fakat bu komutların hepsi Python'un bize sunduğu komutlar. Ya kendimiz Komut yaratabilseydik?
# Fonksiyon kelimesinin kökeni Fransızcadır. Türkçe olarak buna işlev de diyebiliriz. Adından da anlaşılacağı üzere fonksiyonlar çeşitli işleri kolaylaştırmak için kullanılır. Oyunlarda da fonksiyonlar sıkça görülür.
# Fonksiyonlar def komutuyla tanımlanır. Örnek vermek gerekirse:
# Bundan sonra bu dosyanın herhangi bir yerinden bu kodu çağırabiliriz. Bunu bir nevi kısayol olarak hayal edebilirsiniz.
# 4 çeşit fonksiyon tipi vardır.
"""
Öncelikle ilk iki fonksiyonu inceleyelim. Yukarıda aynı amaca hizmet eden 2 adet kod parçası var. Bunlardan ilki parametresiz fonksiyon. Görebildiğiniz gibi foksiyon adından sonra gelen parantezlerin
içi boş. Alttaki ise parametreli. Parantezin içine iki adet değişken girilmiş ve kodun uzunluğu kısalmış. Çünkü burada siz değeri kodu yazarken giriyorsunuz. 1. yöntem hesap makinesi gibi kullanıcıyla
etkileşime geçen programlar için daha iyiyken, oyun mekanikleri gibi programlarda 2 . yöntem daha mantıklıdır. Böylece oyununuzu yazarken her seferinde toplama işlemini yeniden tanımlamanıza gerek kalmaz,
bunu komutla çözebilirsiniz.
"""
# Bu fonksiyonlarda önceden tanımlanmış fakat değiştirilebilecek bir fonksiyon vardır. Böylece fonksiyon boş bırakıldığında oluşabilecek hataların önüne geçilmiş olur.
# Değeri bir yere sakladık, ki orası sonuc değişkeni. Şimdi ise onu dışarıya gönderiyoruz, ki bu cevap değişkeni oluyor. Böylece değişkenler üzerinde işlem yaparmışcasına işlem yapabiliyoruz.
"""
Bu derste Python’un en güçlü yapı taşlarından biriyle vedalaşıyoruz: fonksiyonlar. Artık sadece işlem yapan değil, gerektiğinde değer döndüren, parametre alan ve kodumuzu daha düzenli hale getiren yapılar kurabiliyoruz. Fonksiyonlar sayesinde tekrar eden kodlardan kurtulduk, daha okunabilir ve sürdürülebilir programlar yazmaya başladık.Ama bu sadece başlangıç!Bir sonraki durakta Python’un sınırlarını genişletmeye başlıyoruz: modüller ile tanışacağız. Kendi fonksiyonlarımızı yazmayı öğrendik, şimdi başkalarının yazdığı güçlü araçları projelerimize dahil etmeyi öğreneceğiz. Görüşmek üzere — kodlarımız artık sadece çalışmıyor, işbirliği yapıyor!
"""
# Fonksiyon kelimesinin kökeni Fransızcadır. Türkçe olarak buna işlev de diyebiliriz. Adından da anlaşılacağı üzere fonksiyonlar çeşitli işleri kolaylaştırmak için kullanılır. Oyunlarda da fonksiyonlar sıkça görülür.
# Fonksiyonlar def komutuyla tanımlanır. Örnek vermek gerekirse:
def topla(): # Parametresiz Fonksiyon x=int(input("1. sayı:")) y=int(input("2.sayı:")) sonuc=x+y print("toplama ișleminin sonucu:", sonuc)topla()# Bundan sonra bu dosyanın herhangi bir yerinden bu kodu çağırabiliriz. Bunu bir nevi kısayol olarak hayal edebilirsiniz.
def toplaparametreli (a, b) : # Parametreli Fonksiyon sonuc=a+b print (a,"+",b,"=", sonuc)# 4 çeşit fonksiyon tipi vardır.
"""
Öncelikle ilk iki fonksiyonu inceleyelim. Yukarıda aynı amaca hizmet eden 2 adet kod parçası var. Bunlardan ilki parametresiz fonksiyon. Görebildiğiniz gibi foksiyon adından sonra gelen parantezlerin
içi boş. Alttaki ise parametreli. Parantezin içine iki adet değişken girilmiş ve kodun uzunluğu kısalmış. Çünkü burada siz değeri kodu yazarken giriyorsunuz. 1. yöntem hesap makinesi gibi kullanıcıyla
etkileşime geçen programlar için daha iyiyken, oyun mekanikleri gibi programlarda 2 . yöntem daha mantıklıdır. Böylece oyununuzu yazarken her seferinde toplama işlemini yeniden tanımlamanıza gerek kalmaz,
bunu komutla çözebilirsiniz.
"""
def topla(x=0,y=0,z=0): # Varsayılan Değer Alan Parametreli Fonksiyon sonuc=x+y+z print(sonuc)topla()topla(3)topla(3,5)topla(3,8,9)# Bu fonksiyonlarda önceden tanımlanmış fakat değiştirilebilecek bir fonksiyon vardır. Böylece fonksiyon boş bırakıldığında oluşabilecek hataların önüne geçilmiş olur.
def karekok(sayi=0): # Değer Döndüren Fonksiyon sonuc=sayi ** 0.5 return sonucdef usal(taban=0, us=0): # Değer Döndüren Fonksiyon sonuc=taban ** us return sonuccevap = usal(taban=2, us=3)print(cevap)# Değeri bir yere sakladık, ki orası sonuc değişkeni. Şimdi ise onu dışarıya gönderiyoruz, ki bu cevap değişkeni oluyor. Böylece değişkenler üzerinde işlem yaparmışcasına işlem yapabiliyoruz.
"""
Bu derste Python’un en güçlü yapı taşlarından biriyle vedalaşıyoruz: fonksiyonlar. Artık sadece işlem yapan değil, gerektiğinde değer döndüren, parametre alan ve kodumuzu daha düzenli hale getiren yapılar kurabiliyoruz. Fonksiyonlar sayesinde tekrar eden kodlardan kurtulduk, daha okunabilir ve sürdürülebilir programlar yazmaya başladık.Ama bu sadece başlangıç!Bir sonraki durakta Python’un sınırlarını genişletmeye başlıyoruz: modüller ile tanışacağız. Kendi fonksiyonlarımızı yazmayı öğrendik, şimdi başkalarının yazdığı güçlü araçları projelerimize dahil etmeyi öğreneceğiz. Görüşmek üzere — kodlarımız artık sadece çalışmıyor, işbirliği yapıyor!
"""