[Python/파이썬] 함수의 인자(Argument) 전달

우니·2023년 2월 20일
0

1. 변수, 객체, 주소

  • 파이썬에서 모든 타입은 객체다
  • 변수에 객체를 할당하면 특정 메모리 주소 공간을 할당받는다

원시값, immutable 객체

  • 단순한 원시값으로 되어있는 inr, float나 immutable한 객체인 tuple, string등은 값의 변화를 주면 재할당이 되므로 자연스럽게 메모리 주소가 변경이 된다.
>>> a = 5
>>> id(a)
4396632240
>>> b = a
>>> id(b)
4396632240

>>> a = 50
>>> id(a)
4396633680
>>> id(b)
4396632240

mutable 객체

  • mutable한 객체는 내부 값에 변화를 주면 같은 곳을 바라보고 있던 변수는 주소가 바뀌지 않은채 함께 변경된다. 이 문제는 함수의 인자 전달에서도 동일하게 적용된다.
>>> 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

2. 함수의 인자 전달

함수에 mutable한 객체를 인자로 전달하면, 함수내부에서 변형이 이루어지면, 외부에서도 영향을 받게 된다.

>>> 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]

0개의 댓글