파라미터에 **랑 *는 뭔가요?

조회수 7243회

밑의 코드에서 param2에 붙은 ***는 무슨 일을 하나요?

소스코드

def foo(param1, *param2):
def bar(param1, **param2):

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    *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
    

    **kwargskeyword 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)로 전달
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)