Python deepcopy問題
3723 ワード
Pythonのdeepcopyとc+,cのcopyは品質に差がある.c、c++ではdeepcopyはassignオペレータで構成され、アドレス値は変わらず、値のみが変更されますが、Pythonのcopyです.deepcopy()の場合、新しいアドレス値を持つオブジェクトが作成され、参照を変更して割り当てられます.したがって、次のことに注意してください.
結果が見られると、関数でaが参照するアドレス値は変化するが、外部aが指すアドレス値は依然としてである.したがって、関数でcollectionをパラメータ形式で受信してコピーする場合は特に注意してください.
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をパラメータ形式で受信してコピーする場合は特に注意してください.
Reference
この問題について(Python deepcopy問題), 我々は、より多くの情報をここで見つけました https://velog.io/@geunwoobaek/python-deep-copy문제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol