반응형
코드>>
a_var = [0,1,2,3]
b_var = a_var
c_var = a_var.copy()
d_var = a_var[:]
print(type(a_var))
print(a_var)
print(b_var)
print(c_var)
print(d_var)
print(id(a_var))
print(id(b_var))
print(id(c_var))
print(id(d_var))
결과>>
<class 'list'>
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
3000420137536
3000420137536
3000421627328
3000421627136
주석>>
파이썬은 객체 언어이다. int 값을 정하는 것도 모두 객체이다.
위 코드는 리스트 값을 복사하는 여러 방법을 표현했다.
type에서 볼 수 있듯이 리스트도 class에 들어가 있다. 객체 내에는 포인터가 있는데 포인터를 통해서 해당 값이 어디 있는지 알려준다.
단순히 b_var = a_var 했을 경우 a_var의 값의 위치를 b_var의 포인터가 취할 뿐이다.
[:]처럼 리스트안에 콜롬을 넣으면 값을 복사해오는 것이다. 그래서 복사해온 값을 새로운 위치에 넣고 이 위치를 포인터에 기록한 것이다.
copy는 list에 들어가있는 함수 인데 [:]와 같은 기능을 한다.
메모리 위치를 보면 주석의 내용을 이해할 수 있다.
반응형
'파이썬(Python) > 문법' 카테고리의 다른 글
파이썬(Python) 속성 중 __name__ 이란? (0) | 2021.04.15 |
---|---|
JSON 개념, 의미, 사용 목적, Python Flask 와의 연동 예제 설명 (3) | 2021.01.13 |
파이썬 함수안에 함수, 중첩함수 (0) | 2020.12.11 |
파이썬 zip함수, 별표(*) (0) | 2020.12.10 |
파이썬 functools reduce 사용법 (0) | 2020.12.09 |