Fonksiyonlar bir kod bloğunu tekrar tekrar yazmamızı engeller. Fonksiyonlar yazılırken tıpkı matematikteki fonksiyonlar gibi değişkenler belirlenir ve fonksiyon içerisinde bu değişkenler kullanılır.
Fonksiyon oluştururken def anahtar kelimesi kullanılır ve en sonuna : koyulur.
Bir fonksiyon içerisinde yaptığımız işlemden sonra ana koda bir sayı vs. döndürmek istenirse return kullanılır.
Fonksiyonlar genellikle betiğin başına yazılır. Ana fonksiyon ise altına yazılır.
Fonksiyonlar içerisinde tanımlanan değişkenler, fonksiyon dışarısında kullanılamaz.
Fonksiyonların çalışması için gereken değişkenine varsayılan (default) bir değer atanabilir. Bunun için fonksiyonu tanımlarken o değişkene bir atama yapılması gerekir. Varsayılan değerler hep sona yazılır.
# Fonksiyondef merhabaDunyaYazdir():print("Merhaba Dünya!")# Bir değer döndüren fonksiyondef incdenCMye_cevir(var1_inc):return var1_inc*2.54# Fonksiyon içerisinde tanımlanan fonksiyonun dışarıda kullanılamamasıdef cemberinAlani_cm2(r_cm): pi=3.14return pi* r_cm**2# Varsayılan bir değişken içeren fonksiyondef serbestDusme_hizHesapla_m_s(v0_m_s, t_s, g_m_s2=9.8):return v0_m_s+ g_m_s2* t_s# Fonksiyonları çağıralımmerhabaDunyaYazdir()# --sonuc = incdenCMye_cevir(55)print("55 inç = %1.1f cm' dir."%sonuc)# --sonuc2= cemberinAlani_cm2(3);print("3 cm yarıçaplı bir dairenin alanı %1.3f cm2 dir."%sonuc2)# cemberinAlani_cm2() fonksiyonunda pi sayısı tanımlanmıştı. O pi sayısını çağıralım.#print(pi) #! ÇALIŞMAYACAK#---baslangictakiHız_m_s=0zaman_s=3sonuc3= serbestDusme_hizHesapla_m_s(baslangictakiHız_m_s, zaman_s)print(f"DÜNYADA: V0= {baslangictakiHız_m_s}, t= {zaman_s}, için H={sonuc3}")print(f"DÜNYADA: V0= {baslangictakiHız_m_s}, t= {zaman_s}, için H={sonuc3:.2f}") # Değişkenin yanında .2f yazarak virgülden sonra iki basamağı yazılması sağlanır.# --# Bu fonksiyonu Ay koşulları için çağıralımbaslangictakiHız_Mer =0zaman_s =3g_AY_m_s2=1.625sonuc4 = serbestDusme_hizHesapla_m_s(baslangictakiHız_Mer, zaman_s, g_AY_m_s2)print(f"AYDA: V0= {baslangictakiHız_Mer}, t={zaman_s}, g={g_AY_m_s2} için H={sonuc4}")
Merhaba Dünya!
55 inç = 139.7 cm' dir.
3 cm yarıçaplı bir dairenin alanı 28.260 cm2 dir.
DÜNYADA: V0= 0, t= 3, için H=29.400000000000002
DÜNYADA: V0= 0, t= 3, için H=29.40
AYDA: V0= 0, t=3, g=1.625 için H=4.875
Kısa ve tek satırlık fonksiyonlar için lambda anahtar kelimesi kullanılır. lambda değişkeni yazıldıktan sonra boşluk bırakıp değişkenler yazılır ve : koyulur. Ardından yazılanlar fonksiyonun işlevini tanımlar. lambda fonksiyonlarında return kullanılmaz. Otomatik olarak yapılan işlem döndürülür.
# Kısa yazılmış lambda fonksiyonukareAl =lambda x: x**2print("3^2=", kareAl(3))
3^2= 9
Matematiksel Fonksiyonlar
Python içerisinde bulunan (built-in) bazı matematiksel fonksiyolar vardır. Bu fonksiyonlar aşağıdaki gibidir.
Fonksiyonun Adı
İşlevi
abs()
Mutlak değer
round()
Yuvarlama
min()
En küçük değer
max()
En büyük değer
sum()
Toplam
pow() (veya **)
Üs alma
Not
karşılaştırma fonksiyonu cmp(a,b) python 3.0’dan itibaren kaldırılmıştır.
Modüller bir dosyadaki fonksiyonları ve değişkenleri başka dosyalarda kullanmamızı sağlar.
Modüllerin kullanılması için import anahtar kelimesi kullanılır.
Modüllerin içerisindeki fonksiyonlar, değişkenler . ile çağrılır. Örneğin math modülü içerisindeki pi değişkeni math.pi şeklinde çağrılır.
Modüller betiklerin başında yazılır. Birden fazla modül kullanılacaksa, modüllerin içerisindeki değişkenler ve fonksiyonların karışmaması için as anahtar kelimesi kullanılır. import math as m
import math as mprint(f"Pi sayısı= {m.pi}")print(f"e sayısı = {m.e}")print(f"2^3 = {m.pow(2,3)}")
Pi sayısı= 3.141592653589793
e sayısı = 2.718281828459045
2^3 = 8.0
math, numpy gibi modüller Python komütesi tarafından geliştirilen modüllerdir. Bunların dışında kendi modüllerimizi de oluşturabiliriz. Bunun için farklı bir dosyada fonksiyonlar ve değişkenler tanımlanır. Bu dosyayı ana betikte import anahtar kelimesi kullanılarak çağırıp kullanabiliriz.
Problemler
Problemler 1
araAlistirma2_Modul.py dosyasını oluşturun.
Bu dosyaya al_karesi() fonksiyonunu tanımlayın. Bu fonksiyon bir sayı alsın ve karesini döndürsün.
Bu dosyaya al_faktoriyel() fonksiyonunu tanımlayın. Bu fonksiyon bir sayı alsın ve faktöriyelini döndürsün.
Bu dosyaya kredi_mezunOlmakIcinGerekenAKTS değişkeni tanımlayın. Bu değişkenin değeri mezun olmanız için gereken kredi sayısı olsun.
Bu dosyanın içerisinde if __name__ == "__main__":bloğu bulunmasın. Bu blok araAlistirma2_Modul.py dosyasının modül değil çalıştırılabilir betik olduğu anlamına gelir.
Aynı klasörün içerisine araAlistirma2_Ana.py dosyası oluşturun.
araAlistirma2_Modul.py dosyasını çağırın yani import edin.
Import edilen modüle denemeModul adı verin.
Bu dosyanın içerisinde if __name__ == "__main__":bloğu bulunsun. Tüm işlemlerinizi if __name__ == "__main__": ile oluşturduğunuz bloğa yazın.
denemeModul modülünün içerisindeki al_karesi() fonksiyonunu kullanarak 5 sayısının karesini ekrana yazdırın.
denemeModul modülünün içerisindeki al_faktoriyel() fonksiyonunu kullanarak 5 sayısının faktöriyelini ekrana yazdırın.
denemeModul modülünün içerisindeki kredi_mezunOlmakIcinGerekenAKTS değişkenini kullanarak mezun olmanız için gereken kredi sayısını ekrana yazdırın.