Məzmuna keç
Educora
Orta17 dəq9 / 42

Funksiyalar

Öz funksiyalarını yaz: parametrlər, return ilə qiymət qaytarmaq, susmaya görə qiymətlər və dəyişənlərin görünmə sahəsi.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • def ilə funksiya təyin etmək və onu çağırmaq
  • return ilə nəticə qaytarmaq və onun print-dən fərqini izah etmək
  • Susmaya görə qiymətli parametrlərdən və adlı arqumentlərdən istifadə etmək
  • Lokal və qlobal dəyişənləri fərqləndirmək

Təsəvvür et ki, proqramının beş yerində orta qiyməti hesablayırsan və hər dəfə eyni üç sətri köçürürsən. Sonra hesablamada səhv tapırsan — indi onu beş yerdə düzəltmək lazımdır! Funksiyalar bu problemi həll edir: kodu bir dəfə yazırsan, ona ad verirsən və istədiyin qədər çağırırsan. print(), len() və sum() artıq tanıdığın funksiyalardır — indi öz funksiyalarını yaradacaqsan.

Funksiyanı təyin etmək və çağırmaq

Funksiya def sözü ilə təyin olunur. Ondan sonra funksiyanın adı, mötərizədə parametrlər və iki nöqtə yazılır. Funksiyanın gövdəsi — içəri çəkilmiş blokdur. Təyin edilmiş funksiya öz-özlüyündə heç nə etmir; o, yalnız adı ilə çağırılanda işləyir.

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

greet('Aysel')
greet('Murad')
▸ Gözlənilən nəticə
Hello, Aysel!
Hello, Murad!
Tərif
Parametr və arqument

Parametr funksiyanın təyinində yazılan addır (name). Arqument funksiya çağırılanda həmin parametrə verilən konkret qiymətdir ('Aysel').

return: nəticəni qaytarmaq

Çox vaxt funksiyadan nəticə gözləyirik. return funksiyanın işini dayandırır və qiyməti çağırıldığı yerə qaytarır. Həmin qiyməti dəyişənə yazmaq, başqa hesablamada işlətmək və ya çap etmək olar. Üçqat dırnaqdakı ilk sətir — sənədləşdirmə sətridir (docstring): funksiyanın nə etdiyini qısaca izah edir.

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))
▸ Gözlənilən nəticə
Room area: 14.0
Two rooms: 23.0

Yeni başlayanlar tez-tez print ilə return-ü qarışdırır. print qiyməti sadəcə ekrana yazır, return isə onu proqrama geri verir. return olmayan funksiya susmaya görə None qaytarı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)
▸ Gözlənilən nəticə
5
x = None
y = 5
add_print 5-i ekrana yazdı, amma x-ə heç nə qaytarmadı.
F = C · 9/5 + 32F = C · 9/5 + 32
burada:
  • FFarenheyt dərəcəsi ilə temperatur
  • CSelsi dərəcəsi ilə temperatur

Bu düsturu funksiyaya çevirək

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')
▸ Gözlənilən nəticə
0 °C = 32.0 °F
25 °C = 77.0 °F
100 °C = 212.0 °F

Susmaya görə qiymətlər və adlı arqumentlər

Parametrə susmaya görə qiymət vermək olar: çağırışda arqument verilməsə, həmin qiymət işlədilir. Arqumentləri adları ilə də vermək olar — onda onların sırası vacib deyil və kodu oxumaq asanlaşır.

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))
▸ Gözlənilən nəticə
80.0
60.0
45.0

Funksiya kortej qaytararaq bir neçə nəticəni birdən verə bilər. Çağırışda həmin korteji dərhal dəyişənlərə açırıq:

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

low, high = min_max([12, 5, 27, 9])
print(low, high)
▸ Gözlənilən nəticə
5 27

Dəyişənlərin görünmə sahəsi

Funksiyanın içində yaradılan dəyişən lokaldır: o, yalnız funksiya işləyərkən mövcuddur və çöldən görünmür. Funksiyadan kənarda yaradılan dəyişən isə qlobaldır. İçəridə eyni adlı dəyişənə qiymət versən, bu, qlobal dəyişəni dəyişmir — yeni, lokal dəyişən yaradır.

Python
x = 10

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

change()
print('outside:', x)
▸ Gözlənilən nəticə
inside: 5
outside: 10
Tapşırıq

Siyahı qəbul edib elementlərin ədədi ortasını qaytaran average(numbers) funksiyasını yaz. Başlanğıc kodundakı iki print onu yoxlayır — onları dəyişmə.

Tapşırıq · Python
# define average(numbers) here

print(average([4, 5, 3, 5]))
print(average([10, 20]))
▸ Gözlənilən nəticə
4.25
15.0
Tapşırıq

check(score, pass_mark=50) funksiyasını yaz: bal keçid balından az deyilsə 'passed', əks halda 'failed' qaytarsın. pass_mark verilməyəndə 50 götürülür. Başlanğıc kodundakı üç çağırışı dəyişmə.

Tapşırıq · Python
# define check(score, pass_mark=50) here

print(check(72))
print(check(45))
print(check(45, 40))
▸ Gözlənilən nəticə
passed
failed
passed

Əsas fikirlər

  • Funksiya def ad(parametrlər): ilə təyin olunur və adı ilə çağırılır.
  • return qiyməti çağırış yerinə qaytarır; return yoxdursa, nəticə None-dur.
  • print ekrana yazır, return isə qiyməti proqrama verir.
  • Susmaya görə qiymətlər (discount=0) arqumenti istəyə bağlı edir.
  • Funksiyanın içindəki dəyişənlər lokaldır və çöldən görünmür.

Özünü yoxla

10 sual. Hər düzgün cavab XP qazandırır.

1 / 10
Python-da funksiya hansı sözlə təyin olunur?