파이썬의 참조방식 call by object reference
1. call by value
함수에 인자 값을 전달해도 호출자에게 영향을 주지 않음
a=5로 f(x)에서 x인자에 5를 전달을 하면 함수 내에서 x=5인데
x=7 수행문에 의해 변경시켜도 함수 밖 a 변수가 가지는 값은 여전히 5
2. call by reference
함수 내 인자 값 변경시 호출자 값에도 영향을 줌
값을 주면서 메모리 주소를 넘겨주는 형태
a=5로 함수 f의 x에 넘길 때 메모리 주소도 같이 넘겨서 함수 내부에서 x=7로 변경시키면 함수 밖 a값도 7로 바뀜
3. call by object reference
파이썬의 방식
call by value와 call by reference를 혼합해서 사용
객체의 주소가 함수로 전달되는 방식
전달된 객체를 참조하여 변경시에는 호출자에게 영향을 주나 재할당해버리면 호출자에게 더 이상 영향을 주지 않음
파이썬의 immutable object(단순한 변수, 문자열, tuple)는 call by value를 따르고
mutable object(list, dict 등)는 call by reference를 따른다.
ham = [0]에서 spam(eggs)에 전달하면 eggs와 ham이 모두 [0]을 가리키는데..
여기에 1을 append하면 eggs, ham 모두 [0,1]이고..
여기서 eggs = [2,3]으로 재할당해버리면 eggs는 [2,3]을 가리키고, ham은 [0,1]을 가리킨다
'프로그래밍 > Python' 카테고리의 다른 글
python 반복문 중급 기술 - range, break, continue, for ~ else, string iteration (0) | 2024.04.26 |
---|---|
python 문자열 간단하게 정리 (0) | 2024.04.26 |
matplotlib.pyplot의 gray image 출력이 이상하다면 (0) | 2024.04.22 |
딥러닝 중 UnidentifiedImageError: cannot identify image file 의 에러가 나올때 (0) | 2024.04.22 |
colab에서 데이터를 준비하는 필수 명령어 wget, gunzip, unzip, tar xf, (0) | 2024.04.22 |