когда процесс разветвляет дочерний процесс, дочерний процесс не будет копировать переменную отца, но если дочерний процесс изменит значение переменной отца, он создаст новую переменную, мы вызываем эту копию при записи, теперь см. код ниже:
# 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)
если вы запустите его, результат может быть таким:
parent id=4321407056 value=[2]
child id=4321407056 value=[324]
мой вопрос:
(1) адрес памяти значения переменной такой же, это 4321407056. но я изменил значение, это означает, что я записываю новое значение в переменную, почему адрес памяти не меняется?
(2) если у них один и тот же адрес памяти, то почему они имеют разное значение, одно [2], другое [234]?