본문 바로가기

Computer Science/Python

[Python] 파이썬 call by reference, call by value

반응형

언어를 처음 시작하면서 숙지 해야할 가장 중요한 내용이 바로

해당 언어의 'Memory Management', 'argument passing' 방식이다.

C언어는 기본적으로 call by value이며

사용자가 포인터를 명시하여 사용하는 경우에만 call by reference로 동작한다.

하지만 이후 언어들은 C언어처럼 '포인터' 라는 개념 자체가

명시적으로 보이지 않는 경우가 많다.

그렇기 때문에 사용하는 언어의 메모리 사용 전략에 대한 이해가 매우 중요하다.

 

 

Python은 간단하게 설명하면

- 변경 가능한 (Mutable) 타입은 call by reference : list, dictionary, setanduser-defined classes

- 변경불가능한(Immutable) 타입은 call by value : int, float, decimal, bool, string, tuple, and range

 

 

Source code level에서 말하면

- Immutable type은 함수내에서 변경후 값을 유지하기 위해서는 꼭 return이 필요하고

- Mutable type은 return하지 않아도 함수 외부의 값이 변경됨 

 

 

 

파이썬을 처음 시작하면
tuple과 list의 차이가 무엇이지?? 이런 생각이 들 수 있는데
mutable과 immutable이라는 관점에서 보면 이를 잘 이해할 수 있다.

 

참고하기 좋은 사이트:https://www.geeksforgeeks.org/is-python-call-by-reference-or-call-by-value/

반응형