Qaytarılan qiymətlər

Yuxarıda qeyd etmişdik ki, funksiyalar arqumentləri qəbul edən və qiymət qaytaran obyektlərdir. Misallardan da gördüyünüz kimi, funksiya öz icrası nəticəsində əldə olunan qiyməti return operatoru vasitəsilə qaytarır. Bu operatordan istifadə edilməsi nəticəsində funksiya həm də öz işini yekunlaşdıraraq idarəetməni çağrıldığı yerə ötürür və proqramın icrası qaldığı yerdən davam edir.
Gəlin bir neçə misalı nəzərdən keçirək:

>>> def absum(a, b): 
        s = 0
        for i in range(a, b + 1): 
            s += i
        return s

>>> print(absum(1, 10)) 
55
>>>

Yuxarıdakı proqramda verilmiş aralıqda ədədlərin cəmini hesablayan funksiya təyin edilir. Funksiya daxilində hesablamanın nəticəsi (s) funksiyanın qiyməti olaraq return ilə qaytarılır. Daha sonra proqram daxilində biz bu funksiyaya print(absum(1,10)) ifadəsi daxilində müraciət edirik. Bunun nəticəsində absum() funksiyasının qaytardığı qiymət ekranda çapa verilir.
Funksiya daxilində return operatorundan sonra nəticəsi hesablana bilən ifadə də yer ala bilər:

>>> def sum(a, b): 
        return a + b

>>> x = 1234
>>> y = 4321
>>> sum(x, y)
5555
>>>

Funksiyanın hər hansı bir qiymət qaytarmasını istəmirsinizsə, return açar sözündən sonra None yazmalı və ya ümumiyyətlə, return operatorundan istifadə etməməlisiniz. Bu zaman hər iki halda funksiya qiymət olaraq None (heçnə) qaytaracaq:

>>> def SayHello(): 
        print('Salamlar')
        return None

>>> print(SayHello()) 
Salamlar
None
>>>

Yuxarıdakı proqramda SayHello() funksiyasını print() ilə çap etmək istədikdə nə baş verdiyinə diqqət yetirin. Ekrana birinci sətirdə Salamlar, ikinci sətirdə isə None çıxır. Burada birinci sətirdə çıxan ifadə SayHello() funksiyasının daxilində icra olunan print(Salamlar’) əməliyyatının nəticəsidir. İkinci sətirdəki None ifadəsi isə SayHello() funksiyasının qaytardığı qiymətdir.
Aşağıdakı proqramda daxil edilən sözün hərflərini ayrı-ayrı sətirlərdə yazan funksiya düzəldilir. Bu funksiyanı təyin edərkən, ümumiyyətlə, return operatorundan istifadə olunmur:

>>> def wordlet(s): 
        for i in s:
            print(i)

>>> wordlet('savalan') 
s
a
v
a
l
a
n 
>>>

Belə bir sual versəm, yəqin ki, sizin üçün də maraqlı olar: görəsən, funksiya birdən çox qiymət qaytara bilərmi? Əslində funksiya hər zaman yalnız bir qiymət, daha dəqiq desək, bir obyekt qaytarır. Lakin funksiyanın qaytardığı bu obyekt istənilən tipdə, o cümlədən kortej, siyahılüğət kimi konteyner verilənlər tipində də ola bilər. Bu isə o deməkdir ki, funksiyanın qaytardığı obyekti qiymətlər toplusu kimi verməklə dolayı yolla birdən çox qiymət qaytara bilərik. Adətən, funksiya bu yolla birdən çox qiyməti kortej şəklində qaytarır. Bir misal üzərində bunu nəzərdən keçirək.
Aşağıdakı proqramda verilmiş iki ədədi bir-birinə bölüb tam və qalıq hissəni əldə edən funksiya düzəldilir. Bu funksiya bir cüt qiymət (tam və qalıq) qaytarır:

>>> def adimob(a, b): 
        return a // b, a % b

>>> adimob(5, 2)
(2, 1)
>>> type(adimob(5, 2)) 
<class 'tuple'>
>>> x, y = adimob(5, 2)
>>> x 
2
>>> y 
1
>>>

Gördüyünüz kimi, adimob() funksiyası kortej şəklində iki qiymət qaytarır.

Qaytarılan qiymətlər” üçün bir şərh

Şərh üçün bağlıdır.