practivceAlgorithm/PYTHON 기능연습

[PYTHON] call by value? call by reference?

findTheValue 2021. 7. 11. 22:57

Passed by assignment. 즉 어떤 값을 전달하느냐에 따라 달라진다.

 

num = 10

메모리에 저장된 10이라는 정수형 객체를 num이라는 변수가 가리킨다.

 

파이썬은 int, str, tuple,dictionary의 key는 immutable하고 list, dict는 mutable하다.

(dict value는 마찬가지로 자료형에따라 달라짐)

immutable은 call by value 즉 value만 가져와 새 메모리에 객체를 담는다는 뜻.

mutable은 기존 메모리를 가르킨다는 뜻.

 

즉 list와 dictionary는 변수명을 바꿔서 담아준다 하더라도 하나가 변하면 모든 변수의 값이 변하게 된다.

(메모리에 담긴 본체가 변하므로)

이때 list같은 경우 c = a[:] 즉 슬라이스로 재정의 하거나 d = copy.deepcopy(a)를 하면 같은 객체를 공유하지 않고 새로 정의가 가능하다.(copy모듈의 deepcopy메소드)