방금 일부 문자열 조작을 시작했고이 질문을 발견했습니다. 나는 아마도 OP와 같은 것을하려고 했었습니다. "평소와 같이". 이전 답변은 내 혼란을 해결하지 못했지만 그것에 대해 조금 생각한 후에 마침내 "얻었습니다".
만큼 a
, b
, c
, d
및 e
같은 값을 가지고, 이들은 동일 위치에 참조. 메모리가 저장됩니다. 변수가 다른 값을 가지 자마자 다른 참조를 갖기 시작합니다.
import copy
a = 'hello'
b = str(a)
c = a[:]
d = a + ''
e = copy.copy(a)
print map(id, [ a,b,c,d,e ])
print a, b, c, d, e
e = a + 'something'
a = 'goodbye'
print map(id, [ a,b,c,d,e ])
print a, b, c, d, e
인쇄 출력은 다음과 같습니다 :
[4538504992, 4538504992, 4538504992, 4538504992, 4538504992]
hello hello hello hello hello
[6113502048, 4538504992, 4538504992, 4538504992, 5570935808]
goodbye hello hello hello hello something
은 (완전히 정확 명시된 바와 같이하지만 반드시 질문에 대답하지 않습니다) Martijin의 당신이 수도 다른 대답하려면 내 학습 경험이 코드에서 온 ** 자세한 내용을 보여주기 위해 사용 사례를 제공하고 싶은 이유 **를 복사하려고합니다. – elmo
@elemo가 암시 하듯이, 이것은 [XY 문제] (http://www.perlmonks.org/?node=XY+Problem) 일 수 있습니다. – martineau
'd [ 'hello'] = e' 형식의 중첩 된 사전의 메모리 사용량을 추정하는 데 관심이있었습니다. 여기서 e [ 'hi'] = 'again ''입니다. 그런 중첩 된 사전을 생성하기 위해 나는 하나의'e' 사전을 생성하고 여러 번 복사했습니다. 나는 메모리 소비가 매우 낮다는 것을 알아 차렸고, 이것이 내 질문에 이르렀다. 이제는 문자열 복사본이 만들어지지 않았으므로 메모리 사용량이 적다는 것을 알고 있습니다. –