언어를 처음 시작하면서 숙지 해야할 가장 중요한 내용이 바로
해당 언어의 '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/
'Computer Science > Python' 카테고리의 다른 글
[conda-forge/miniforge] 미니포지 삭제 - 맥(MAC) OS (0) | 2022.07.18 |
---|---|
[Python] 예약어, 키워드 (keywords, reserved word) (0) | 2022.07.10 |
[Python] enumerate를 활용한 for loop (0) | 2022.07.03 |
[Python] json.dumps 한글깨짐 해결 (0) | 2021.04.07 |
[Python] 파이썬 XML 데이터 읽기 (0) | 2019.07.18 |