Python 은 명시적인 Call by Reference 혹은 Call by Value 라는 개념이 존재하지 않는다.
Python의 function에 argument 를 전달할 때, 이는 Manual 에 따르면 call by assignment 라는 방식으로 전달된다.
이는 Parameter로 전달받는 객체에 따라 객체의 참조방식이 결정된다는 의미로, 공식 문서에 따르면 Mutable Object 는 Call by reference의 형태로 참조형으로 변수를 다루며 Immutable Object는 Call by value 의 형태로 변수를 핸들링한다.
- Mutable Object : list, dict, set 등의 객체
- Immutable Object : str, int, tuple 등의 객체
가령 다음과 같은 코드는 전달되는 객체에 따라 파이썬이 변수를 어떻게 핸들링하는 지를 간단하게 보여준다.
출력 결과는 다음과 같다.
foo 함수의 경우 int 형을 핸들링하기 때문에 call by value 로 새로 변수를 할당해서 처리하는 모습을 보여주고 list 를 입력받은 foo2 함수의 경우 call by reference 로 전달 받은 객체를 직접 변경하는 모습을 볼 수 있다.
'Programming Language > Python' 카테고리의 다른 글
Python 의 Package 와 __all__ 키워드 (0) | 2018.09.25 |
---|---|
Python 2 버전과 3 버전의 차이 (0) | 2018.08.04 |