이번에는 함수의 파라미터에 인자값이 들어가는 방법들에 대해 설명합니다.
1. 함수 호출시 파라미터 갯수와 인자값의 갯수가 반드시 일치해야 합니다.
Named parameter(******) : 인자값에 파라미터와 동일한 이름을 줍니다.
인자값에 파라미터와 동일한 이름이 부여됐기때문에 인자값의 순서와 상관없이 변수가 대입됩니다.
왜 named factor가 아니라 named parameter일까?
"""
함수 호출 방법
1. 함수 호출시 파라미터 갯수와 인자값의 갯수가 반드시 일치해야 한다.
"""
#1. 함수 호출시 파라미터 갯수와 인자값의 갯수가 반드시 일치해야 한다.
# 인자값의 순서대로 파라미터 변수에 저장된다.
def fun1(n, n2):
print(n, n2)
# 일반적인 인자값, 이름이 없음. 인자값의 순서대로, 파라미터 변수에 순서대로 들어감
fun1(10, 20) # 10 20
#. named Parameter (*****) 인자값에 파라미터와 동일한 이름을 주어 호출
fun1(n= 100, n2=200) # 100 200
fun1(n2= 1000, n=2000) # 2000 1000
#이름이 붙었기 때문에 순서에 상관 없이 이름대로 파라미터 변수에 대입됨.
2. 파라미터 갯수와 인자값의 갯수가 다를 때 해결방법
가) 파라미터 > 인자값 : default 파라미터 사용
"""
함수 호출 방법2
2. 파라미터 갯수와 인자값의 갯수가 다를 때 해결방법
파라미터 > 인자값 : default 파라미터 사용
파라미터 < 인자값
"""
#2. 파라미터 변수 > 인자값
def fun2(n= 30, n2 = 200): # 함수 선언시 파라미터에 default 값을 줌.
print(n, n2)
fun2(10, 20) # 10 20
fun2(100) # 100 200 # 파라미터 변수에 기본값을 주었기 때문에 에러 없음 (default 파라미터)
fun2() # 30 200 # 인자값이 하나도 없지만 파라미터에 기본값이 있기때문에 그 기본값으로 값 반환
2. 파라미터 갯수와 인자값의 갯수가 다를 때 해결방법
나) 파라미터 < 인자값 : * 이용해서 (un)packing 한다. ( 내부적으로 tuple로 감싸준다. )
"""
함수 호출 방법2
2. 파라미터 갯수와 인자값의 갯수가 다를 때 해결방법
파라미터 > 인자값 : default 파라미터 사용
파라미터 < 인자값 : * 이용해서 packing 한다. ( 내부적으로 tuple로 감싸준다. )
"""
* 이 사용되는 경우 (대입연산자 심화 과정에서 했음)
(가) 변수 선언시 unpacking 하는 용도 데이터 1개를 -> 여러개로
# (가) 변수 선언시 unpacking 하는 용도 데이터 1개를 -> 여러개로
x, *y = [10, 20, 30] # 데이터 1개를
print(x, y) # 10 [20, 30] # 데이터 2개로 만듦
(나) 함수의 파라미터 선언시 packing 하는 용도
# (나) 함수의 파라미터 선언시 packing 하는 용도
# 3. 파라미터 변수 < 인자값 데이터 여러개를 -> 더 적은 갯수로
def fun3(n,*n2): # * packing 사용 ==> tuple()
print(n, n2)
fun3(10, 20) # 10 (20, )
fun3(1, 2, 3) # 1 (2, 3)
fun3(20, 30, 50, 43) #20 (30, 50, 43)
** packing을 하면 ===> tuple 값이 아니라 dict 값으로 반환한다.
def fun4(**n): # ** packing 사용 ==> dict()
print(n)
fun4(name ="홍길동", age=20) # {'name': '홍길동', 'age': 20}
print("="*50)
*와 **를 혼용해서 사용할 수도 있다.
# *와 **를 혼용해서 사용 가능.
# 주의할 점 ==> 반드시 *을 먼저, 다음 **. 순서대로
def fun5(n, *n2, **n3):
print(n, n2, n3)
fun5(10, 20, 30, name=1, age=2) # 10 (20, 30) {'name': 1, 'age': 2}
함수, 파라미터, packing( *, **) 설명 끝~
반응형
'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글
0903_4일차_연습문제 (0) | 2020.09.06 |
---|---|
0903_4일차_함수_일급객체 (0) | 2020.09.06 |
0903_4일차_함수_사용자정의함수 (0) | 2020.09.06 |
0903_4일차_반복문_while문 (0) | 2020.09.06 |
0903_4일차_List/Dict Comprehension (0) | 2020.09.06 |
댓글