1. 기본 개념
파이썬에서는 함수에 인수를 전달할 때 "객체 참조에 의한 전달(call by object reference)" 방식을 사용합니다. 이는 실제 객체의 참조(주소)가 전달된다는 의미입니다.
2. 비유로 이해하기
이것은 마치 책의 위치를 알려주는 것과 같습니다:
- 함수에 인수를 전달하는 것 = 책의 위치를 알려주는 것
- 실제 객체 = 책
- 참조 = 책의 위치
3. Immutable(변경 불가능한) 객체와 Mutable(변경 가능한) 객체의 차이
3-1. Immutable 객체 (예: 정수, 문자열, 튜플)
입력:
def change_number(n):
n += 10
print("함수 내부:", n)
x = 5
change_number(x)
print("함수 외부:", x)
출력 :
함수 내부: 15
함수 외부: 5
3-2. Mutable 객체 (예: 리스트, 딕셔너리)
입력:
def add_item(lst):
lst.append(4)
print("함수 내부:", lst)
my_list = [1, 2, 3]
add_item(my_list)
print("함수 외부:", my_list)
출력:
함수 내부: [1, 2, 3, 4]
함수 외부: [1, 2, 3, 4]
4. 주의할 점
- Immutable 객체를 변경하려고 하면 새로운 객체가 생성됩니다.
- Mutable 객체를 변경하면 원본 객체가 직접 수정됩니다.
- 함수 내에서 Mutable 객체를 수정할 때는 주의가 필요합니다. 의도치 않게 원본이 변경될 수 있기 때문입니다.
'TIL' 카테고리의 다른 글
[TIL] 자료 구조와 배열 (Python) 5편 - 리스트와 튜플 활용하기 (1) | 2024.09.10 |
---|---|
[TIL] 자료 구조와 배열 (Python) 4편 - 뮤터블과 이뮤터블 객체의 대입 (0) | 2024.09.10 |
[TIL] 자료 구조와 배열 (Python) 3편 - 인덱스싱, 슬라이싱 (1) | 2024.09.09 |
[TIL] 자료 구조와 배열 (Python) 2편 - 리스트와 튜플 (3) | 2024.09.09 |
[TIL] 자료 구조와 배열 (Python) 1편 - 기본 개념 (0) | 2024.09.08 |