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 
Şö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 
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.
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.