본문 바로가기
대동단결 Python

함수의 가변인자 와 *(별표)연산자

by 즐거운 지니 2022. 5. 14.
반응형

def test(*args, **kwargs):
    print(args)
    print(kwargs)


test(1,2,3, temp=23, ttemp=45)
(1, 2, 3)
{'temp': 23, 'ttemp': 45}

어떤 함수의 인자(parameters)를 특정지을 수 없을 때 *를 포함한 변수명으로 받을 수 있다.
위 예에서 함수 test*args, **kwargs의 변수명으로 인자를 받는다.
args는 arguments의 약자로, kwargs는 keyward arguments의 약자로 사용되었으나, 이름은 파이썬 문법이 허용하는 어떤 이름이든 상관없다. 중요한 것은 별표하나 와 별표두개이다.
별표하나의 변수명 즉 *args로 전달되는 인자는 모든 위치형 인자(positional parameter)가 되고, **kwargs로 전달되는 인자는 모든 키워드형 인자가 된다.

위 예에서 함수test를 호출할 때 위치형 인자로 1,2,3을 전달하고, 키워드형 인자로 temp=23, ttemp=45를 전달한다. 전달받은 함수 내부에서 보면
변수 args는 튜플이고, 변수 kwargs는 딕셔너리임을 확인할 수 있다.

아래와 같이 인수들을 미리 변수로 정의해 놓고 *와 **를 붙인 변수로 인수들을 전달할 수도 있다.

para1 = (1,2,3)
para2 = {'temp': 23, 'ttemp': 45}
test(*para1, **para2)
(1, 2, 3)
{'temp': 23, 'ttemp': 45}
반응형

댓글