Python에서 = 과 <- 의 차이
조회수 577회
Python에서 type이 list인 A와 B가 있을 때 (혹은 type이 list가 아니더라도)
A = B로 선언한뒤 뒤에 A를 만지면 B도 같이 변하나요?
또한 그렇다면 B를 변하지 않게 하기 위해선 A = B 대신 A <-B 로 선언하면 되나요?
다름이 아니라 제 코드를 돌렸는데 B를 왼쪽에 (등호 좌변)에 놓은 적이 없고 A만 만졌는데 B가 변한 것 같아 질문드립니다.
3 답변
-
파이썬의 변수는 기본적으로 주소를 저장한다고 생각하시면 됩니다
>>> a = [1,2,3] >>> b = a
가 되면 a에는
[1,2,3]
을 참조할 수 있는 주소값이 저장되고, b에는 a에 저장된 것과 같은 주소값이 저장됩니다.그렇기 때문에
a.append(4)
와 같은 작업을 하면 b는 a와 동일한 주소값을 저장하고 있기 때문에a
와b
를 출력해보면 모두[1, 2, 3, 4]
이 나오게 됩니다.>>> a = [1, 2, 3] >>> b = a >>> a = [1, 2, 3, 4]
만약 위와 같이 하게 된다면 b는 a가 기존에 가리키고 있던 주소값을 저장하고 있지만 a에는 새로운 주소값이 저장되기 때문에 두 개가 별개로 존재하게 되죠
만약 리스트를 포함한 보편적인 상황에서
a
와b
를 구분하고자 한다면 다음과 같이 하면 됩니다.import copy a = [1, 2, 3] b = copy.deepcopy(a) >>> a [1, 2, 3] >>> b [1, 2, 3] >>> a.append(4) >>> a [1, 2, 3, 4] >>> b [1, 2, 3]
-
이걸 보시죠.
요약: 파이썬에는
<-
연산자가 없는데, 아마<
와 음수 부호-
를 잘못봤겠지- 혹시 A=B 로 선었했을 때 왼쪽 A에 대해 변형시키면 B도 자동으로 변하는 지에 대한 대답을 해 주실 수 있으실지요? magic0111 2020.4.17 16:17
- 저도 파이썬은 일천하여 링크만 겁니다: https://robertheaton.com/2014/02/09/pythons-pass-by-object-reference-as-explained-by-philip-k-dick/ 편집요청빌런 2020.4.17 16:20
-
댓글 입력