주로 다루고자 하는 내용은 이부분이다.
코딩테스트 준비를 하던 중 전역변수로 선언한 부분을 함수에서 다루었을 때에 대한 의문이 생겨 찾아보게 되었다.
>>> a = 5
>>> id(a)
4396632240
>>> b = a
>>> id(b)
4396632240
>>> a = 50
>>> id(a)
4396633680
>>> id(b)
4396632240
>>> a = [1, 2, 3, 4, 5]
>>> b = a
>>> id(a)
4404799176
>>> id(b)
4404799176
>>> a.append(6)
>>> a
[1, 2, 3, 4, 5, 6]
>>> b
[1, 2, 3, 4, 5, 6]
>>> id(a)
4404799176
>>> id(b)
4404799176
Immutable vs Mutable
파이썬 객체에는 수정 가능한 타입도 있고, 수정 불가능한 타입이 있다.
수정 불가능한 객체를 immutable 객체, 수정 가능한 객체를 mutable 객체라고 한다.
구분 | 타입 |
---|---|
Immutable 객체 | int, float, str, tuple |
Mutable 객체 | list, dict |
더 자세히 보려면 ! https://wikidocs.net/91520
>>> m = [1, 5, 7]
>>> def modify(k):
... k.append(10)
... print("k = ",k)
...
>>> modify(m)
k = [1, 5, 7, 10]
>>> m
[1, 5, 7, 10]
>>> r = [10, 15, 20]
>>> def replace(s):
... s = [25, 30 ,35]
... print("s =", s)
...
>>> replace(r)
s = [25, 30, 35]
>>> r
[10, 15, 20]
>>>def function(d):
... d.append(10)
... return d
>>> c = [1, 5]
>>> e = function(c)
>>>id(c)
4404828936
>>>id(e)
4404828936