Programming/Python

Call by Value? Call by Reference??

매직블럭 2021. 3. 10. 16:35

python을 사용하면서 막연히 파이썬의 함수 파라메터는 call by value 방식이라고 생각했다.

 

문득 내가 쓰는 코드를 보니 왜 그렇게 짰는지도 모르겠지만 call by reference 형태로 동작하는 

코드를 짜서 쓰고있는 부분을 발견.. 

 

그럼 파이썬은 call by value야? call by reference야?.. 궁금해서 찾아본 결과는

파이썬은 call by assignment 방식 또는 call by object reference 라고 표현하더라.

 

<파이썬 알고리즘 인터뷰>  p.107, 책만, 2020

어떤 의미냐 하면 우선 파이썬의 표준타입들을 보면 여러 타입이 있지만 그 중에서 

상수(숫자), 문자열, 바이트, 튜플 이 네가지 타입은 불변 타입이고 나머지 타입은 가변타입이다.

 

파라미터로 사용될때 불변타입은 값 변경이 불가능하여 새로운 객체로 복사전달되어 call by value 처럼 동작하고,

나머지 가변타입들은 값 변경이 가능하여 call by reference 방식으로 동작하게 된다.

 

막연히 사용하던 내용인데 이 부분도 참 편하다 파이썬..