본문 바로가기
Review/SW Jungle

[WEEK01] 함수의 인수와 매개변수 / 객체의 복사

by jamiehun 2022. 9. 25.

[Do it 자료구조와 함께 배우는 알고리즘 입문 with 파이썬] 개념 정리

1) 함수의 인수와 매개변수

def func(n):       
	print(func(n))

call by object reference

파이썬에서 인수전달은 실제 인수인 객체에 대한 참조를 값으로 전달하여 매개변수에 대입하는 방식

 

값에 의한 호출 (call by value)

: 실제 인수값을 매개변수에 복사하는 값에 의한 호출

 

참조에 의한 호출 (call by reference)

: 실제 인수의 참조를 매개변수에 복사하여 매개변수가 실제 인수와 같아지는 참조에 의한 호출

 

매개변수와 실제 인수

실행시점

: 매개변수는 실제인수와 같은 객체 참조

 

함수에서 매개변수 변경시

1) 인수가 immutable 

: 매개변수 변경시 다른 객체 생성, 그 객체에 대한 참조로 업데이트

=> 매개변수 값 변경해도 호출하는 쪽의 실제 인수에는 영향 x

2) 인수가 mutable

: 매개변수 변경시 객체자체를 업데이트

=> 매개변수 변경시 호출하는 쪽의 실제 인수값을 변경

 

2) 객체의 복사

1) 얕은 복사

객체가 갖는 멤버값을 새로운 객체로 복사할 때 객체가 참조자료형의 멤버로 포함할 경우 (참조값만 복사하는 방식)

 

2) 깊은 복사

: 참조값 뿐만 아니라 객체 자체를 복사

: 객체가 갖는 모든 멤버(값과 참조 형식 모두) 복사하므로 전체복사라고 함

 

x = [[1, 2, 3], [2, 3, 4]]
y = x.copy()

# y 변경시
# 1)얕은 복사 : x 값도 변경됨
# 2)깊은 복사 : x 값은 변경 안됨