Def fonksiyonu girinti

Merhaba,

Aşağıdaki örneğin açıklamasını yapabilir misiniz ?

def listem(ogrenciler):
    for i in ogrenciler:
        print(i)
x=["Murat","Mehmet","Ahmet"]

listem(x)

ek olarak, x=[“Murat”,“Mehmet”,“Ahmet”] kısmı girinti olarak def listem(ogrenciler) içerisinde değil.
ancak listem(x) yazdığımda nasıl oluyorda

Murat
Mehmet
Ahmet

çıktısı veriyor.

ve son olarak

 for i in ogrenciler:
        print(i)

kısmını kaldırdığımda ve x=[…} kısmına girinti verdiğimde name ‘x’ is not defined hatasını neden veriyor ? sonuçta x’e bi liste içerisinde atama yapıyorum.
kafamda yine cevabı basit ama beni zorlayan sorular oluşmuş.

şimdiden açıklamalarınız için teşekkür ederim.

Merhaba.

Aslında gayet basit. Şöyle ki,

listem ve x, global isim alanındaki iki öğe. Siz, x’i listem’e parametre olarak verdiğiniz de; x, listem isim alanına ogrenciler ismi ile dahil olur ve for döngüsü ile ekrana yazdırılır.


Çünkü siz, x’i global isim alanından alıp listem isim alanına taşıyorsunuz, haliyle global isim alanındaki print(), x’i bulamıyor.


Bu isim alanları biraz karmaşık gelmiş olabilir, isterseniz şu siteye de bir gözatın: Python Namespace and Scope of a Variable (With Examples)

1 Beğeni

Öncelikle açıklama için teşekkürler
söylediklerinizden yola çıkarak,
x değişkenine atanan değerleri en başa aldım.f
böyle çok daha anlaşılır oldu benim için.

x=["Murat","Mehmet","ahmet"]

def listem(ogrenciler):
    for i in ogrenciler:
        print(i)

listem(x)
1 Beğeni

listem(x) yazisini python kodu olarak calistirirsan listem fonksiyonu x argumani ile cagrilir. listem gelen argumandaki isimleri alt alta yazdigina gore, arguman olarak yolladigin x’in icinde bu uc isim varsa bu ciktiyi alirsin.

Bir koddan bahsederken kaldirdigin/degistirdigin kisimlar yerine geriye kalan ve bahsetmek istedigin kodu yazarsan soyledigin daha anlasilabilir olur.

Python’da liste icerisinde bir sey yapmak diye bir sey yok.
listem fonksiyonu icerisinde atama yapiyorsun.

Hatayi fonksiyonun disinda, x’i goremeyen bir yerde ve fonksiyonu calistirmadan, atamayi yapmadan aliyorsun.


Kafa karisikligi dogru akisi, sebep–sonuc iliskilerini bilmemenden doguyor. Bunun kaynaginin da ogrenmek icin kullandigin materyalin terminolojiye ve aciklamalara dikkat etmemesi oldugunu tahmin ediyorum.

Yukaridaki gibi denemeler yapip cikarimla yapmaya, yapamadiginda ise buraya danismaya devam etmen lazim gibi geliyor.

x degiskenine yapilan atamayi da basa almissin.

Buna gerek yok; kullanildigi scopea (“isim alani” galiba) ve bu scope icinde kullanildigi noktadan onceki herhangi bir noktaya alabilirsin.

2 Beğeni