Mengapa string Python dialokasikan pada stack?

9

Menurut visualizer kode Python ini , string Python dialokasikan pada stack dan bukan pada heap.

Kenapa ini? Saya pikir mereka akan mirip dengan Jawa di mana String dialokasikan pada heap.

rdasxy
sumber

Jawaban:

7

Visualizer itu tidak menunjukkan data string pada stack. Itu menunjukkan referensi lokal ke data tumpukan sebagai bagian dari tumpukan panggilan. Ini sangat mirip dengan Java di mana Stringreferensi adalah variabel lokal yang menunjuk ke Stringobjek aktual di heap.

Visualizer bebas membuat penyederhanaan representasi apa pun yang diinginkannya. Itu tidak menyiratkan bahwa "string Python dialokasikan pada stack" di setiap implementasi Python.

Greg Hewgill
sumber
1

Apakah Greg mengatakan dalam jawabannya, string dialokasikan pada heap.

Visualizer telah memilih untuk menampilkan beberapa objek di bagian "bingkai", yang tampaknya salah bagi saya. Untungnya, itu berdampak kecil bagi seseorang yang belajar python, karena objek yang terpengaruh (int, string) tidak berubah. Jadi masih ada kemungkinan untuk berpikir tentang efek.

Namun itu memberi kesan yang salah bahwa string digandakan dalam memori ketika Anda melakukan hal-hal seperti:

x = "hello"
y = x
Simon Bergot
sumber