Python programlama dilinin dayandığı referans modelini nasıl anlıyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Python'da değişkenler, bellek içindeki nesnelere (objelere) referanslar (bağlantılar) olup, kendileri değerlerin kapsayıcıları değildir. Bir değişkene değer atadığımızda, aslında o değişken, bu değeri içeren nesneye işaret etmeye başlar. Değişken, değiştirilebilir bir nesneye (örneğin, liste veya sözlük) referans veriyorsa, bu nesne kendisi değiştirilir. Değiştirilemez bir nesneye (örneğin, sayı, dize veya tuple) referans veriyorsa, bellekte yeni bir nesne oluşturulur ve değişken ona işaret etmeye başlar.
# Değiştirilemez nesne (int)
a = 10
b = a # a ve b başlangıçta aynı nesneye referans eder
print(id(a), id(b)) # Aynı id
a = 20 # Yeni bir nesne oluşturur, a ona referans olur
print(id(a), id(b)) # Farklı id, b hala 10'a referans eder
# Değiştirilebilir nesne (liste)
list1 = [1, 2, 3]
list2 = list1 # list1 ve list2 aynı listeye referans eder
print(id(list1), id(list2)) # Aynı id
list1.append(4) # Her ikisinin referans ettiği nesneyi değiştirir
print(list1)
print(list2) # Her iki liste de değiştirilir
print(id(list1), id(list2)) # Hala aynı id
Referans sayımı mekanizması, belleğin otomatik yönetimi için kullanılır. Her nesne, ona referans veren değişkenlerin sayısını takip eder. Sayı sıfıra ulaşınca, nesne erişilemez hale gelir ve çöp toplayıcı, kullandığı belleği serbest bırakır.
C gibi doğrudan değer saklama dillerinden önemli bir fark, Python'da b = a ifadesinde, a'nın değeri b'ye kopyalanmaz; bunun yerine, b artık a'nın referans ettiği nesneye işaret eder.