ketika suatu proses mem-fork seorang anak, anak tersebut tidak akan menyalin variabel ayah tetapi jika proses anak mengubah nilai variabel ayah, maka akan membuat variabel baru, kami menyebutnya salinan saat menulis, sekarang silakan lihat kode di bawah ini:
# coding=utf-8
import os
value = []
res = os.fork()
if res == 0:
value = [324]
print 'child id={id} value={value}'.format(id=id(value), value=value)
else:
value = [2]
print 'parent id={id} value={value}'.format(id=id(value), value=value)
jika dijalankan, hasilnya mungkin seperti ini:
parent id=4321407056 value=[2]
child id=4321407056 value=[324]
pertanyaanku adalah :
(1) alamat memori nilai variabelnya sama, yaitu 4321407056. tetapi saya telah mengubah nilainya, artinya saya menulis nilai baru ke variabel tersebut, mengapa alamat memori tidak diubah?
(2) jika keduanya memiliki alamat memori yang sama, mengapa nilainya berbeda, yang satu adalah [2], yang lainnya adalah [234]?