파라미터에 **랑 *는 뭔가요?
조회수 7432회
1 답변
-
*args
,**kwargs
는 0개 이상의 인자를 받을 때 쓰입니다. 인자가 하나도 안 들어오는 경우도, 10개, 100개가 들어오는 경우도 수용해 주지요.*args
는 함수의 파라미터를tuple
로 저장하고 있습니다.def foo(*args): for arg in args: print arg print "---foo()---" foo() print "\n---foo(1)---" foo(1) print "\n---foo(1,2,3,4,5)---" foo(1,2,3,4,5)
결과:
---foo()--- ---foo(1)--- 1 ---foo(1,2,3,4,5)--- 1 2 3 4 5
**kwargs
는keyword argument
를 dictionary로 저장하고 있습니다(단,formal parameter
를 제외)def foo(keyword=3, **kwargs): for key in kwargs: print key, kwargs[key] print "---foo()---" foo() print "\n---foo(number = 'one')---" foo(number = 'one') print "\n---foo(keyword='1', temp1='hello', temp2='world!')---" foo(keyword=1, temp1='hello', temp2='world!')
결과:
---foo()--- ---foo(number = 'one')--- number one ---foo(keyword='1', temp1='hello', temp2='world!')--- temp2 world! temp1 hello
*l
은 함수의 인자에서 쓰이는 경우 list를 item으로 풀어줍니다.def foo(num1, num2): print num1, num2 l = [1,2] foo(*l) #([1,2])가 아닌 (1,2)로 전달
댓글 입력