Şimdi Ara

fonksiyon parametreleri

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
18
Cevap
0
Favori
240
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Herkese merhaba python da fonksiyonalrı görmeye başladım ama bu kod kısmını tam anlayamadım burda tam olarak ne yapılmış oluyor


    Kod

    Yığını:
    def change(n):     n[0] = "ıstanbul" sehirler = ["ankara","izmir"] change(sehirler[:]) print(sehirler)

    bu kodları çalıştırdıgın zaman şehirler oldugu gibi çıkıyor ama şehirleri slicing yapmazsan listenin 0 indexdeki elemanı değişiyor




    < Bu mesaj bu kişi tarafından değiştirildi layk5t -- 4 Kasım 2020; 19:44:50 >



  • slicing yapmak nedir? hangi dili konuşacaksınız önce ona bir karar verin.

    fonksiyon içindeki n'in elemanına deger atama, fonksiyon dışındaki liste içeriğini etkilemez.



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 4 Kasım 2020; 22:45:26 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • slicing; yani parçalama/dilimleme anlamına geliyor bunu bilirsiniz diye düşünüyordum neyse önemli değil.


    "fonksiyon içindeki n'in elemanına deger atama, fonksiyon dışındaki liste içeriğini etkilemez."


    biraz daha ayrıntılı bir tanım rica edicem.




    < Bu mesaj bu kişi tarafından değiştirildi layk5t -- 5 Kasım 2020; 18:12:22 >
  • layk5t kullanıcısına yanıt

    Liste içeriğini değiştirmek için fonksiyon sonuna return n koymalısın ve fonksiyonu sadece liste adı ile çağırmalısın.


    Kod

    Yığını:
    def change(n):     n[0] = "istanbul"     return n sehirler = ["ankara","izmir"] change(sehirler) print(sehirler) # => ['istanbul', 'izmir']
  • Burada anlatılmak istenen büyük ihtimalle mutable ve immutable değişken tipleri.


    list, mutable bir değişken tipidir, yani değiştirilebilir. (https://medium.com/@meghamohan/mutable-and-immutable-side-of-python-c2145cf72747)


    eğer siz change(sehirler) derseniz sizin tanımlamış olduğunuz sehirler dizisi ["istanbul", "izmir"] olarak değişecektir, sanki reference olarak vermiş gibi düşünebilirsiniz. (C diline hakimseniz, pointer yollamış gibi düşünün)


    eğer siz change(sehirler[:]) derseniz o zaman sehirler listesinin elemanlarını yollamış olursunuz. elinizdeki sehirler değişkeni bozulmamış olacaktır.


    burada deneyebilirsiniz: https://replit.com/@sonerb/PuzzlingGrubbyDebugger





  • overpSkpt kullanıcısına yanıt

    cevabınız için teşekkürler mutable ve immutable dışında geri kalanlarını anladığımı söyleye bilirim bu terimleri henüz bilmiyorum

    benim anlayamadıgım tek nokta change(sehirler[:]) bu kısımdı sizin açıklamanız biraz daha kafama oturdu

    şimdi biraz aheste soru sorucam fonksiyon parametreleri 


    change(sehirler[:]) derseniz o zaman sehirler listesinin elemanlarını yollamış olursunuz


    böyle yaparsak fonksiyon bunu nasıl algılar yani ne oluyorda şehirler listesinde hiç bir degişiklik olmuyor


    biraz saçma olabilir ama mümkün olduğunca aklıma soru işareti kalmamasını istiyorum




    < Bu mesaj bu kişi tarafından değiştirildi layk5t -- 7 Kasım 2020; 23:39:20 >




  • layk5t kullanıcısına yanıt

    Aslında programlama dilinin arkaplanda nasıl çalıştığına göz atmak lazım.

    En basitinden şöyle anlatabilirim.

    Python'da oluşturduğunuz her değişken bellekte bir alan kaplar ve bu alanın bir adresi mevcuttur. (1, 2, 3, 4... diye gittiğini düşünün.)


    Aşağıda vereceğim 2 örnekte oluşturduğumuz sehirler ve change içerisindeki n değişkenin id() fonksiyonu ile adreslerini yazdırıyoruz.


    https://replit.com/@sonerb/addresstest1


    addresstest1 örneğinde change(sehirler[:]) diyerek değer yollamıştık bu değeri yollamak için python arkaplanda sehirler içerisindeki değerleri alıp yeni bir değişken oluşturuyor ve change içerisine onu gönderiyor.


    fonksiyon parametreleri

    yukarıda da gördüğün gibi sehirler ve n değişkenlerinin adresleri farklı.


    https://replit.com/@sonerb/addresstest2


    addresstest2 örneğinde ise change(sehirler) diyerek sehirler değişkenini direkt olarak change fonksiyonuna veriyoruz. Böylece python yeni bir değişken oluşturmak yerine var olan değişkenin adresi üzerinden işlem yapıyor.


    fonksiyon parametreleri

    yukarıda da görüldüğü gibi hem sehirler hem n değişkeni aynı adrese sahip, n üzerinde yapılan bir değişiklik aslında sehirler üzerinde yapılmış demektir.





  • Öğrenmek anlama kabiliyeti ile sınırlı bir şey. Kimse kapasitesini aşamaz zaten. Farklı olsaydı ortalık doktor'dan, mühendis'ten geçilmezdi.


    Alaylı diye de bir şey yok. Bilen var, bilmeyen var. Sonradan öğrenebilenin de mutlaka kendi dalında okumuşluğu var. Yani beyni öğrenmeye müsait.




    < Bu mesaj bu kişi tarafından değiştirildi K110 -- 8 Kasım 2020; 14:12:24 >
  • seyfi84 S kullanıcısına yanıt
    troll bir yazı mı ciddi mi anlamadım ama önemli olan bilgiyi paylaşmak değil midir?

    < Bu ileti DH mobil uygulamasından atıldı >
  • seyfi84 S kullanıcısına yanıt

    Yapmış olduğunuz yorum "matbaa, osmanlıya neden 200 yıl geç geldi?" sorusunu açıklar nitelikte.


    Eğer ki siz başarınız ile "cahil alaylı" olarak nitelendirdiğiniz insanlardan sıyrılıp bir yerlere varamıyorsanız, demek ki onlar bir şeyleri çabalayarak sizden daha başarılı bir hale gelmiş demektir.

    Yıllarca üniversitelerde okumak, mezun olmak, kitaplar okumak sizi başarılı hale getirmez.

    Kendi çabalarınızla başarılı olursunuz.


    Buradaki forumun amacı bilgi paylaşmaktır, insanlar bir yerlere varmasın diye onları kösteklemek değildir, farklı yerler ile karıştırıyorsunuz sanırım.


    Tecrübe denilen şey paylaşılmadıkça ancak toprak altında kurtlar tarafından kemirilen beyninizle yok olur gider.

    Anlaşılan tek amacınız para kazanmak, yemek içmek ve ölüp gitmek.

    Dünya üzerinde bırakmak istediğiniz hiçbir iz, fayda yok.

  • Sanırım burda bir olay olmuş tam olarak ne olduğunu bilmiyorum. sanırım bir şahıs bana hakaret etmiş yada alay etmiş(yorumları okuduğum kadarıyla bu şahıs senin kapasiten yeterli değil tarzında birşeyler yazmış olsa gerek) sanırım ben görmeden adminler geregini yapmış yada şahıs yorumunu silmiş

  • overpSkpt kullanıcısına yanıt

    gerçekten çok teşekkür ederim sayenizde aklımda hiçbir soru işareti kalmadı demekki change[:] dediğimiz zaman fonksiyon içinde farklı bir adresde yeni bir değişken oluşturuyor ve orjinal liste böylelikle bozulmuyor

  • Bilginin yayılmasından zarar gelmez. Cehaletin yayılmasından zarar gelir.


    Bilgiye (teorik) olrak sahip olmak ile bilgiye hakim olmak farkılı şeyler.

  • sehirler[:] memory de başka bir objeye point ettiginden sehirler listesinden bagimsizdir. Bu yuzden sehirler listesi degismez.


    sehirler is sehirler[:] ifadesi False idir bu yuzden


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.