Python dərs 4 — Funksiyalar

Hasan Jafarov
4 min readMar 1, 2020

--

Funksiyalar programımızda bir neçə yerdə lazım olacaq kod bloğunu bir yerə bir adla yazıb sonradan o adla istifadə etmək üçündür. Pythonda funksiya aşağıdakı kimi yazılır.

def funtionname(parameters…):

kodlar

Parametr olmağı vacib deyil. İstənilən sayda parameter yazıldığı kimi parameter yazılmaya da bilər. def sözü ilə funksiya təyin olunur. Həmişə def yazmaq vacibdir. Parametr olmasa belə funksiya adından sonar mötərizə açıb bağlamaq vacibdir. Funksiyanın gövdə hissəsi yəni kodlar yazdığımız hissəsi ‘tab’-dan sonar yazılmalıdır. İndi sadə bir parametrsiz funksiya yazaq.

def salamyaz():

print(“Salam”)

salamyaz() #funksiyanı çağırırıq

İndi isə parametrlərin istifadəsinə baxaq. cem funksiyası yazaq və parametr kimi verilən iki ədədin cəmini yazdırsın.

def cem(a,b): #burada a və b parametrlərdir

print(a+b)

cem(5,4) #9 funksiya çağrılarkən yazılan 5 və 4 arqumentlərdir

cem(5,100)#105

cem(5,-20)#-15

İndi 2-dən çox rəqmin cəmini tapan funksiya yazaq.

def cem(l): #l list parametri alır

cem = 0 #funksiya içində funksiya ilə eyni adlı dəyişən tanıtmaq olar

for i in l:

cem += i

print(cem)

list1 = [1,20,3,-12,5,8,-10] #list

cem(list1) #15

Bu şəkildə də yazmaq olar.

def cem(*a):

cem = 0

for i in a:

cem += i

print(cem)

cem(4,5,6,7,-8,-9)

Yuxarıdakı bütün nümunələrdə sıralı arqumentlərdən istifadə etdik. Bundan başqa adlandırılmış arqumentlərdə var. Buna aid bir neçə nümunəyə baxaq.

def cem(a,b):

cem= a+b

print(cem)

cem(b=4,a=5)#9

Arqumentlərə default dəyər vermək olar. Bu halda funksiyanı çağırdıqda bu arqumentə dəyər ötürməsəkdə olar.

def cem(a,b=5):

cem= a+b

print(cem)

cem(a=5)

cem(5)

cem(5,15)

cem(a=5,b=15)

cem(b=5,a=15)

Default dəyərə sahib olan parametrləri əvvəl yazıb sonar digər parametrləri yazmaq olmaz. Həmişə ən sonda default dəyəri olan parametrləri yazmaq lazımdı. Yəni yuxarıdakı kodda def cem(a=5,b) yazsaq xəta verəcək. Bütün parametrlərə default dəyər vermək olar. Bu zaman həmin funksiyanı arqumentsiz də çağırmaq olar.

İstənilən sayda adlandırılmış arqumentlər istifadə etmək üçün “**” operatorundan istifadə etmək olar.

def fonksiyon(**ədədlər):

cəm = (ədədlər[“a”]+ədədlər[“b”])

print(cəm)

fonksiyon(a=80,b=90)#170

Aşağıdakı yazılışlar doğru deyil və xəta verəcək.

hi()

def hi():

print(“hi!”)

#parameter

def hi():

print(“hi”)

hi(5)

#default dəyərli parametrlər

def sum(a, b=2, c):#default dəyəri olan parametrlər sonda yazılmalıdır.

print(a + b + c)

sum(a=1, c=3)

Yuxarıda yazdığımız bütün funksiyalarda ekrana nəsə yazdırdıq, amma çox vaxt funksiyadan geriyə dəyər qaytraıb onu istifadə etmək lazım olacaq. Bunun üçün return sözündən istifadə olunur.

def imtahandankecibmi(a):

if a>60:

return “İmtahandan keçib”

else:

return “İmtahandan keçməyib”

print(imtahandankecibmi(10))

print(imtahandankecibmi(70))

Bu funksiyanı else hissəsini silək.Bizə geriyə None döndürəcək. Əgər funksiya içərisində bizə heç nə geri qaytarmırsa None qaytarır.

def imtahandankecibmi(a):

if a>60:

return “İmtahandan keçib”

print(imtahandankecibmi(1)) #None

None özü xüsusi bir tipdir. Tipini yoxlamaq üçün belə baxa bilərik.

print(type(None)) #<class ‘NoneType’>

Bir çox proqramlaşdırma dilindən fərqli olaraq Pythonda bir funksiya şərtə görə fərqli tiplərdə dəyər qaytara bilər. Aşağıdakı nümunəyə baxaq.

def imtahandankecibmi(a):

if a>60:

return “İmtahandan keçib”

elif a==50:

return 5

elif a==40:

return True

elif a==30:

return 1.5

print(type(imtahandankecibmi(65)))#str

print(type(imtahandankecibmi(50)))#int

print(type(imtahandankecibmi(40)))#bool

print(type(imtahandankecibmi(30)))#float

print(type(imtahandankecibmi(35)))#NoneType

Həmçinin funksiyaya fərqli tiplərdə arqumentlər göndərib içəridə buna görə əməliyyatlar apara bilərik.

def isInt(data):

if type(data) == int:

return True

elif type(data) == float:

return False

print(isInt(5))

print(isInt(5.0))

print(isInt(“5”))

Funksiyada return ifadəsindən sonra funksiya bizə geri dəyər qaytarır və ondan sonra yazdığımız kodlar çalışmır.

def imtahandankecibmi(a):

return #elave etdik

if a>60:

return “İmtahandan keçib”

elif a==50:

return 5

elif a==40:

return True

elif a==30:

return 1.5

print(type(imtahandankecibmi(65))) #NoneType

print(type(imtahandankecibmi(50))) #NoneType

print(type(imtahandankecibmi(40))) #NoneType

print(type(imtahandankecibmi(30))) #NoneType

print(type(imtahandankecibmi(35))) #NoneType

Bu halda istənilən halda NoneType geri qayıdacaq və return-dən aşağıdakı kodlar heç vaxt çalışmayacaq.

Built in funksiyalar python içində istifadə etməyə hazır şəkildə gələn funksiyalara deyilir. Məs:range(),sum(),print(),len() və s

Daha bir nümunəyə baxaq.

x = 10

def f():

x = 20

print(x)

f()#20 funksiya içindəki x

print(x) #10 funksiyadan kənardakı x

global dəyişənlərdən istifadə etsək funksiya içindəki dəyişəni kənarda da istifadə etmək olar.

x = 10

def f():

global x

x = 20

print(x)

f()#20

print(x) #20

Aşağıdakı halda funksiyanı çağırmadığımız üçün funksiya içində global x təyin edilsə belə ekrana 10 yazacaq.

x = 10

def f():

global x

x = 20

print(x)

print(x) #10

x-ə funksiya xaricində dəyər mənimsətməsəkdə olar.

def f():

global x

x=20

print(x)

f()#20

print(x)#20

Aşağıdakı şəkildə yazsaq xəta verəcək.

def f():

x=20

print(x)

f()

print(x) #x-i tanımır xəta

Funksiya içində funksiya yazmaq da olar.

x = 10

print(“x =”,x)

def f():

x = 20

print(“f içində x =”,x)

def g():

x = 30

print(“g içində x =”, x)

g()

f()

Nəticə:

x = 10

f içinde x = 20

g içinde x = 30

Rekursiv funksiyalar özünü təkrar təkrar çağıran funksiyalardır. Bu funksiyalarda base case olur hansıki əvvəl bu yazılır həmişə sabit dəyər döndürür sonra isə recursuve case yazılır hansı ki funksiyanın özünü çağırır. İlk n Fibanoçi ədədinin cəmini geri qaytaran funksiya yazaq.

def fibonacci(eded):

# Base Case

if eded == 0:

return 0

elif sayi == 1:

return 1

# Recursive Case

else:

return fibonacci(eded-1) + fibonacci(eded-2)

print(fibonacci(10))

Eyni məntiqlə rekursiv funksiyalar yaza bilərsiz. Funksiyaları daha yaxşı başa düşmək üçün bir neçə nümunə fikirləşib yazmağınız yaxşı olacaq.

Son olaraq yazdığınız funksiyalara məlumat əlavə edə bilərsiniz. İntelligence və s yerlərdə bu məlumat görünəcək. Məlumat “””Melumat “”” və ya “ “ şəklində yazılır. Əsas şərt odur ki, funksiyanın içində ilk sətirdə yazılmalıdır məlumat.

def cem(a,b):

“””a və b ədədlərini toplayır”””

# və ya “a və b ədədlərini toplayır”

return a+b

print(cem.__doc__)

--

--

No responses yet