Python deepcopy問題


Pythonのdeepcopyとc+,cのcopyは品質に差がある.c、c++ではdeepcopyはassignオペレータで構成され、アドレス値は変わらず、値のみが変更されますが、Pythonのcopyです.deepcopy()の場合、新しいアドレス値を持つオブジェクトが作成され、参照を変更して割り当てられます.したがって、次のことに注意してください.
import copy
a = [1,2,3,4]
print('처음 a의 id는 {} 입니다. 값은 {}입니다.'.format(id(a),a))
def func(a):
    temp = [2, 3, 4, 5]
    print('함수내의 a의 id는 {} 입니다.'.format(id(a)))
    a = copy.deepcopy(temp)
    print('함수내에서 deep copy한후 a의 id는 {} 입니다. a의 값은 {}입니다.'.format(id(a),a))
func(a)
print('함수 실행이후 a의 id는 {} 입니다. 값은 {}입니다.'.format(id(a),a))

結果が見られると、関数でaが参照するアドレス値は変化するが、外部aが指すアドレス値は依然としてである.したがって、関数でcollectionをパラメータ形式で受信してコピーする場合は特に注意してください.