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


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

소스코드

def foo(param1, *param2):
def bar(param1, **param2):
  • 2016년 01월 13일에 작성됨

조회수 248


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)로 전달
  • 2016년 01월 13일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close