함수에 인자를 넘기는 방법에는 두가지가 있습니다. call by reference랑 call by value. Python에서는 이걸 제가 어떻게 받겠다 하고 임의로 정할수는 없구요. data type에 따라서 자동으로 결정이 됩니다. int, float, str, tuples등을 call by value로 넘어가서 해당 함수 안에서 지지고 볶아도 일마치고 나왔을때 넘겨줬던 인자는(변수에 담아서 호출했다치고) 호출하기 전에 저장했던값과 동일한 값을 가지고 있습니다. 이런 변하지 않는 성질을 가지는 data type에 속하는 애들을 통칭해서 immutable object라고 합니다. 변하지 않는다 이거죠. 그런데 list, disc, set같은 data type들은 call by reference로 넘어가서 호출받은 함수에서 내용을 변경하면 함수를 마치고 나왔을때 인자로 넘겨주었던 value가 변경되어있어요. 이렇게 호출받은애가 내용을 바꿨을때 함수 바깥쪽에서도 같이 바껴버리는 성질을 가진 data type들을 통칭해서 mutable object라고 합니다.
References:
- https://code13.tistory.com/214