Fonksiyon parametreleri

Ark_Us

Kilopat
Katılım
7 Nisan 2017
Mesajlar
849
Makaleler
1
Çözümler
7
Herkese merhaba yeni konu olarak fonksiyonları görmeye başladım tam olarak anlayamadığım bir nokta var kodları aşağıya bıraktım.
Python:
def change(n):
    n[0] = "ıstanbul"

sehirler = ["ankara","izmir"]

change(sehirler[:])

print(sehirler)
Şimdilik burasını tam kavrayamadım anlamadığım noktalar arttıkça bu konuyu güncelleyeceğim.
 
Öncelikle yaptığın değişikliği döndürmen gerek. Python'a çok hakim değilim, döndürmeden hallediliyordur muhtemelen ama genel fonksiyon bilgisinde asıl olay odur.
Döndürdüğün şeyi de değişkene ataman (yorumda olan kısım) veya direkt kullanman (yorumda olmayan print kısmı) gerekir.

Kod:
def change(n):
    n[0] = "ıstanbul"
    return n

sehirler = ["ankara","izmir"]

print(change(sehirler))

#liste = change(sehirler)
#print(liste)
 
Videodaki hoca "bu şekilde listeyi kopyalayabilirsiniz" diyor ama ben durumu tam olarak çakamadım.
Kodu doğru yazdığınıza emin misiniz?

Python:
def change(n):
    n[0] = "istanbul"

sehirler = ["ankara","izmir"]

change(sehirler)

print(sehirler)

Bu şekilde olduğunda fonksiyon, sehirler dizisinin ilk elemanını "istanbul" ile değiştirir.
 
Kodu doğru yazdığınıza emin misiniz?

Python:
def change(n):
    n[0] = "istanbul"

sehirler = ["ankara","izmir"]

change(sehirler)

print(sehirler)

Bu şekilde olduğunda fonksiyon, sehirler dizisinin ilk elemanını "istanbul" ile değiştirir.

Onu biliyorumda slicing işlemi yapınca yani change(sehirler[:]) yapınca listenin 0 indexteki eleman değişmiyor anlamadığım kısım bu sanırım listeyi kopyalayıp fonksiyona gönderiyor böylelikle liste bozulmuyor benim anladığım bu.
 
Onu biliyorumda slicing işlemi yapınca yani change(sehirler[:]) yapınca listenin 0 indexteki eleman değişmiyor anlamadığım kısım bu sanırım listeyi kopyalayıp fonksiyona gönderiyor böylelikle liste bozulmuyor benim anladığım bu.
1604435184833.png


Kaynak: List Objects — Python 3.9.0 documentation

Slicing yeni referans donduruyor. Sen degismeyeni print ediyorsun.
 
Nasıl yani tam anlayamadım.
change fonksiyonunun parametre olarak aldigi liste ile, print fonksiyonunun parametre olarak aldigi liste, ayni liste degil. Bak orada "returns new reference" yaziyor dokumantasyonda. ( Eger slicing yapiyorsan )

Aslinda calisiyor ama sen uzerinde degisiklik yaptigin listeyi print etmedigin icin gormuyorsun.
 

Yeni mesajlar

Geri
Yukarı