-
Python: 에일리어싱(Aliasing)Python 2020. 6. 29. 23:27
에일리어싱(Aliasing)에 대해 공부하기전에 alias의 뜻부터 알고 가시죠!
alias는 '가명'이라는 뜻을 가지고 있는데 이는 쉽게 말해 파이썬에서
변수 = 객체 일때,
객체에 변수라는 가명을 정해준다고 생각하시면 됩니다.
이렇게 객체와 변수의 연관짓는 것을 참조(reference)라고 합니다.
예를 들어서 여기 이 코드를 보시면
x = 10 y = x y = 5 print(x) print(y)
10 5
10이라는 상수에 x라는 가명을 정해주고, 다시 y는 x라는 가명이 정해진 상수 10에 가명을 정해줍니다.
그리고 이후, 5라는 상수에 y라는 가명을 정해주면서 y는 5를 참조해주게 됩니다.
하나 이상의 참조를 가진 객체는 한 개 이상의 이름을 갖게 되어서
객체가 에일리어스(aliased)되었다고 합니다.
당연한거 아니냐! 고 생각하실 수 있는데 이를 왜 공부하냐면
만약 에일리어스된 객체가 변경 가능하면, 변화의 여파는 다른 객체에도 영향을 끼치기 때문입니다.
보통 리스트에서 이를 간과하기 쉬운데 이 코드를 보시면
x = [2, 3, 4, 1, 10, 2] y = x y[2] = 15 print(x) print(y)
[2, 3, 15, 1, 10, 2] [2, 3, 15, 1, 10, 2]
x의 리스트 값은 우리의 예상과 다르게 y와 동일하게 나옵니다.
이는 x가 객체를 참조하고 y 가 x를 참조하면서, 두 변수는 동일한 객체를 참조합니다.
그래서 파이썬에서는 리스트를 넘길때는 list()를 이용합니다.
x = [2, 3, 4, 1, 10, 2] y = list(x) y[2] = 15 print(x) print(y)
[2, 3, 4, 1, 10, 2] [2, 3, 15, 1, 10, 2]
잘 모르면 실수하기 쉬운 부분인것 같습니다.
반응형'Python' 카테고리의 다른 글
Python: with open() 파일 읽기(read), 쓰기(write), 덧붙히기(append), strip(), split() 함수란? (0) 2020.06.30 Python: 모듈 import하고 표준 라이브러리 모듈 사용해보기! (feat. math, random, datetime) (0) 2020.06.30 Python: 딕셔너리(Dictionary) 사전 기능! (0) 2020.06.29 Python: 리스트와 문자열을 비교해보자! (0) 2020.06.28 Python : while문, for 문, range함수 알아보기! (0) 2020.06.27