Python-return deyimi

Arkadaşlar öncelikle Merhaba return deyiminin ne işe yaradığını anlayamadım mesela bu örnekte;

import random

def sayı_üret(başlangıç=0, bitiş=500, adet=6):
    sayılar = set()

    while len(sayılar) < adet:
        sayılar.add(random.randrange(başlangıç, bitiş))

    return sayılar

print(sayı_üret(0, 100, 10))

burada 0 ve 100 arasında rastgele 10 sayı ürettik ama return’ün burada ne yaptığını anlayamadım.

Merhaba,

return deyimi fonksiyondan dışarı değer döndürmeye yarıyor ve bu dönen değeri fonksiyonun dışında kullanabilirsiniz. Paylaştığınız örnekteki return deyimini kullanmasaydınız, print(sayı_üret(0, 100, 10)) ifadesi ekrana None yazısını yazdıracaktı. Bir fonksiyondan herhangi bir değer return ediliyorsa, o değeri bir değişkenin değeri haline getirebilirsiniz.

Örneğin:

sayi1  = sayı_üret(0, 100, 10)
sayi2 = sayı_üret(0, 50, 5)
1 Beğeni

pek anlamadım daha basit bir şekilde anlatabilirmisiniz lütfen :frowning:

Şöyle bir kodda a'nın alacağı değeri nasıl buluruz? Sağdaki işlemi yaparak:

a = 1 + 1

Sağdaki 1 + 1 işlemini yaptığımızda kodun şu hale geldiğini hayal etmemiz, kodun çalışma biçimi açısından yanlış olmaz:

a = 2

Fonksiyonların döndürdüğü, yani return ettiği değer de bu şekilde çalışıyor. Örneğin şöyle bir kodda:

def fonk():
    return 1

a = fonk() + 1

fonk() + 1 kısmının değerini bulmaya çalışırsak fonk fonksiyonunu çağırırız ve fonksiyonun return ettiği değer fonk() ifadesinin değeri olur. Bu örnekte fonksiyon 1 döndürüyor. Yani kod şu hale geldi:

a = 1 + 1

Daha sonra da a, 2 değerine sahip olur.

print(sayı_üret(0, 100, 10)) kısmında da sayı_üret(0, 100, 10) işleminin sonucu, yani döndürğü değer print'e argüman olarak veriliyor ve ekrana yazılıyor.

Konu burada da anlatılmış:

Örnekle göstermeye çalışayım. Aşağıda f isminde bir fonksiyon görüyorsunuz. Bu fonksiyon x isimli bir parametre alıyor. Yani biz bu fonksiyonu çağırırken x parametresine bir değer atamamız lazım.

def f(x):
    return x

Buradaki return ifadesi, fonksiyondan bir değerin döneceği anlamına gelir. Yani biz bu fonksiyonu çağırıp bir değişkenin değeri haline getirirsek, o değişken x değerine sahip olacaktır.

def f(x):
    return x


degisken = f(10)
print(degisken) # <---- 10

degisken = f("hello")
print(degisken) # <---- hello

Yukarıdaki fonksiyonda dönen değer, fonksiyona yazılan parametreydi. Duruma göre fonksiyonda yapılan bir işlem sonucunu da döndürebilirsiniz.

def topla(x, y):
    return x + y


toplam = topla(3, 4) # <---- 7

Hiç bir değer döndürmeyen (= None değeri döndüren) bir fonksiyon yazalım.

def f():
    print("hello")


degisken = f()
print(degisken) # <---- None

Umarım daha anlaşılır olmuştur.

1 Beğeni

@dildeolupbiten

return ifadesi “değişkenin değerini” döndürür “değerin sahip olduğu değişkeni” değil dimi?

Değer döndürür.

a = 2

ifadesindeki a, değişken; 2 ise, değerdir.

Bir değişkenin değeri haline getirmek ifadesi şu anlama geliyor:

degisken = topla(2, 3)
1 Beğeni

kısacası bir değeri başka bir dizi’de kullanabilmek için return kullanıyoruz doğru mudur?

Dizi derken neyi kastettiğinizi bilmiyorum. Farklı bir scope'ta kullanmayı sağlıyor. Biraz scope kavramından bahsedeyim isterseniz. scope'a, faaliyet alanı diyebiliriz.

Bir fonksiyonun içindeki herhangi bir değişken, o fonksiyon çalıştığı sürece ve yalnızca o fonksiyonun faaliyet alanı içerisinde tanımlıdır. Fonksiyonun dışına çıktığımızda bu değişken de hafızadan silinir.

def f():
    x = 1
    # x'in faaliyet alanı bu fonksiyondur.

# Bu kısımda x tanımsızdır.
print(x)

Yani şöyle düşünebilirsiniz. Girinti sayısının 0 olduğu alana global alan denir. global alanda yer alan değişkenlere her yerden ulaşılabilir. Bir fonksiyonda tanımlı olan bir değişkene ise sadece o fonksiyonda ve varsa o fonksiyonun altında tanımlı başka fonksiyonlardan ulaşılabilir.

def f():
    x = 1

    def g():
        print(x)

    g()

Tekrar bir gözden geçirelim isterseniz.

x = 1
# x, global bir değişkendir ve her alanda tanımlıdır,
# kendisine her alandan ulaşılabilir.

def f():
    y = 1
    # y yalnızca bu fonksiyonda tanımlıdır.

İşte biz bir fonksiyonda tanımlı olan herhangi bir değişkenin değerini, fonksiyonun dışına çıkarmak istediğimizde return ifadesini kullanırız.

x = 1

def f():
    return 2


y = f()

print(x + y) # <--- 1 + 2 = 3
2 Beğeni

anladığım kadarıyla fonksiyon içindeki değeri dışarda da kullabilmemizi sağlıyor. yani “globalleştirme” gibi bir kavram oluşuyor. çok teşekkürler elinize sağlık :slight_smile:

globalleştirme de pek uygun bir terim değil çünkü bir değişkeni globalleştirmenin başka bir yolu var ama dediğiniz gibi return edilen değeri dışarıda kullanmamızı sağlıyor.

Anladım Teşekkürler.

merhaba geç oldu ama söylemeyi unuttum return olmadan değeri fonksiyon dışına çıkarmanın yolu varmı?

Çok yolu var ama en çok kullanılan yol değeri döndürmek. global deyiminden de verdiğim linkte bahsedilmiş. Siz nasıl bir yol arıyorsunuz?

1 Beğeni

Daha kolay bir yol arıyordum ama lambda fonksiyonunu öğrendim gerek kalmadı teşekkürler.