본문 바로가기

Programming/Python

파이썬 가변인자 함수 사용

반응형

가변인자 함수는 함수가 몇 개의 인자를 받을지 정해지지 않은 함수입니다.

파이썬에서는 가변인자 함수를 지원하고 있습니다.

C++에도 가변인자 함수를 구현하고 있는데 아래 링크에서 내부 구조를 확인할 수 있습니다.

2014/12/07 - [Programming/C&C++] - 가변 인자(Variable Arguments) 내부 구조

파이썬에서는 가변인자를 받을 때 *을 붙여서 받습니다.

다음과 같이 입력받는 숫자의 개수와 상관없이 합을 구할 수 있는 함수를 만들 수 있습니다.

def sum_all(*args):
    result = 0
    for i in args:
        result += i

    return result

print(sum_all(1, 2, 3, 4, 5))
print(sum_all(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

결과가 각각 15와 55로 표시되는 것을 확인할 수 있습니다.

함수의 인자명은 args가 아닌 다른 것으로 변경 가능합니다.

가변인자 함수에 리스트 변수 등을 전달할 때는 앞에 *를 추가해야 합니다.

sumList = [1, 2, 3, 4, 5]
print(sum_all(*sumList))

직접 전달하는 것과 결과가 동일하게 출력됩니다.

인자의 이름과 함께 전달하는 방법도 존재합니다.

def makeURL(**kwlist):
    myUrl = "http://192.168.1.120/index.php?"
    for k, v in kwlist.items():
        myUrl += k + '=' + v + '&'

    myUrl = myUrl.rstrip('&')
    print(myUrl)

makeURL(user = 'psychoria', index = '5', page = '10')

함수에서는 딕셔너리 형태로 전달을 받아서 사용할 수 있습니다.

URL을 생성할 때 키, 값 형태로 주소 뒤에 연결하는데 이럴 때 사용할 수 있습니다.

가변인자 함수에 리스트 변수를 전달할 때 *을 추가하는 것처럼 딕셔너리 변수를 전달할 때 **을 추가합니다.

urlList = {'user':'psychoria', 'index':'5', 'page':'10'}
makeURL(**urlList)

가변인자 사용시 주의할 점은 변수 형태로 전달할 때는 *이나 **을 반드시 추가해야 된다는 점입니다.

추가하지 않으면 에러가 발생하게 됩니다.

가변인자 함수를 통해 좀 더 유연하게 동작하는 함수 작성이 가능합니다.

반응형