[Python] python *args와 **kwargs 차이

2016. 9. 25. 23:36프로그래밍/Python & dJango

1. *args 는 튜플 형태의 여러개의 파라미터를 전달할때 사용됩니다.

testFunc('1','2','3','4')

위와 같이 파라미터를 여러개 작성하여 넘기는 경우 *args 로 값을 받을 수 있습니다.


def testFuc(*args):
for value in args:
print value

실행 후 결과는

1

2

3

4


2. **kwargs 는 dictionary 형태의 값을 전달할 때 사용됩니다.

dic = {'name': 'hong', 'age': 30}
testFunc2(**dic)


위와 같이 파라미터를 전달하면 **kwargs로 값을 받을 수 있습니다.

def testFunc2(**kwargs):
for item in kwargs:
print '{0}, {1}'.format(item, kwargs[item])

실행 후 결과는


age, 30

name, hong


*** 추가적으로 *args 는 튜플이기 때문에 튜플형태의 리스트를 넘기는게 가능하다.


ex)

tu = [1,2,3,4]
aaaa(*tu)

def aaaa(a,b,c,d):
print a
print b
print c
print d

*) 값을 넘길때는 반드시 변수앞에 *을 붙여줘야함.