티스토리 뷰

728x90
반응형

파이썬 함수 구현 중 특히 커맨드 라인 입력처럼 다양한 갯수의 옵션이 필요한 경우 *args나 **kwargs 구문을 많이 보았다.  습관적으로 그려려니 하고 넘어가다가 사용법을 한번 정리하는 것이 좋겠다는 생각이 들어 이곳에 간단히 정리한다. 

 

*args 이해하기

함수의 파라미터 영역에 *args가 들어 있는 경우 입력 데이터가 몇개일지 모르는 경우에 사용한다.  여기서 중요한 것은 args가 아니고 *인 것을 최근에 알았다. *는 함수의 인자로 들어로는 데이터가 몇개인지 모르겠으나 해당 변수명으로 모아서 처리하겠다는 뜻이다. 

 

다음과 같이 *names 로 인자를 하나로 선언하고 들어오는 것을 tuple과 같이 처리하는 함수를 구현한다.

def test_args(*names):
    for name in names:
        print(name)

구현한 함수 test_args는 다음과 같이 다양하게 사용이 가능하다.  입력하는 데이터의 갯수를 마음대로 넣어서 사용이 가능하다.

test_args('steve',48)
# 실행결과
steve
48

test_args('steve','angela','tomson')
# 실행결과
steve
angela
tomson

입력한 데이터를 하나의 자료구조에 넣어두었다가 함수를 호출할 때 다음과 같이 *를 앞에 넣는 것을 주의하면 된다.

name_list = ['steve','angela','tomson']

test_args(*n)

# 실행 결과
steve
angela
tomson

 

**kwargs 이해하기

**두개로 표시되는 kwargs는 kw가 keyword를 뜻한다. 즉 입력 인자를 *args가 tuple 형태로 넣는 것이라면 **kwargs는 각 파라미터를 딕셔너리 형태로 관리해서 받겠다는 뜻이다. 즉 key값과 해당 value값으로 짝을 이루어서 함수 입장에서는 순서가 바뀌던 말던  해당 keyword로 데이터를 분리해서 처리할 수 있다는 뜻이 된다. 

 

예를 들어 다음과 같이 **를 이용해 함수를 구현할 수 있다. 

def test_kwargs(**args):
    for key, value in args.items():
        print('key=', key, 'value=',value)

**args는 딕셔너리 형태의 인자로 딕셔너리에서 key, value값을 뽑아 사용할 수 있게 된다. 

 

함수의 사용방법은 다음과 같다. 

test_kwargs(first_name='steve', last_name='jobs', age=48)

# 실행 결과
key= first_name value= steve
key= last_name value= jobs
key= age value= 48

자유롭게 key값과 value값을 형식에 맞게 넣으면 동작하게 된다. 

 

역시 다음과 같이 미리 저장된 딕셔너리에 필요한 값을 넣어두고 사용할 수 있다. 

sample = { 'first_name': 'steve', 'last_name': 'jobs', 'age': 48}
test_kwargs(**sample)

# 실행결과
key= first_name value= steve
key= last_name value= jobs
key= age value= 48

역시 여기서도 주의할 점은 함수를 호출할 때 준비된 딕셔너리 변수 앞에  **를 붙여주면 된다.

 

 

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함