본문 바로가기
SK 행복성장캠퍼스/Python 기초

0903_4일차_함수_파라미터

by NickNuma 2020. 9. 6.

이번에는 함수의 파라미터인자값이 들어가는 방법들에 대해 설명합니다.

 


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( *, **) 설명 끝~

반응형

댓글