Nesne üzerinde neden çalışamıyoruz?

Öncelikle herkese iyi forumlar.
Bugün python ile çalışırken listeler üzerinde bazı fonksiyonlar kullanmaya çalıştım fakat nesne üzerinde birtürlü çalıştıramadım.Örnek vermek gerekirse:

print([4,3,2,1].sort())
# None

Fakat diğer proglamlama dillerinde nesne üzerinde çalışılabiliyor:

// javascript
[4,3,2,1].sort();
// [1,2,3,4]
# ruby
[4,3,2,1].sort()
# [1,2,3,4]

Aynı sorun ters çevirme metotlarında da var:

// javascript
[4,3,2,1].reverse();
// [1,2,3,4]
# python
print([4,3,2,1].reverse())
# None
# ruby
[4,3,2,1].reverse
# [1,2,3,4]

Bunun nedeni nedir ?
Şimdiden teşekkürler.

Kullandığınız metotların dökümanına baktınız mı? Metodun açıklamasına help(list.sort) kodu ile ulaşabilirsiniz.

1 Beğeni

None çıktısının sebebi sort metodunun bir şey return etmemesi. sort() metodunu çağırdınızda sort() metodunu çağırdınız liste örneği değiştiriliyor.
Mesela:

arr = [4,3,2,1]
arr.sort()
print(arr)
# [1, 2, 3, 4]

sort() metodunu bir kere çağırırsınız ve listedeki elemanlar argüman verirseniz sizin istediğiniz şekilde, vermezseniz varsayılan şekilde sıralanır.


Ama olur da listenizi tek seferde sort edip bastırmak isterseniz sorted() builtin fonksiyonu var:

arr = [4,3,2,1]
print(sorted(arr))
# [1, 2, 3, 4]

Farkları ise sorted() fonksiyonu sort() metodunun aksine listenizi değiştirmiyor, bir değer return ediyor.


Umarım anlatabilmişimdir.

3 Beğeni

Teşekkürler şimdi anlayabildim :slight_smile: