Sysops Notepad

[Python] 파이썬 *args,**kwargs 의미 (Asterisk(*)) 본문

업무/dev

[Python] 파이썬 *args,**kwargs 의미 (Asterisk(*))

sysops 2019. 2. 20. 11:05


*args

- list of arguments - as positional arguments

- 파라미터를 몇개를 받을지 모르는 경우 사용한다. 

- args 는 튜플 형태로 전달된다.


<ex>-------------------------

def print_param(*args):

    print args

    for p in args:

        print p


print_param('a', 'b', 'c', 'd')

#('a', 'b', 'c', 'd')

#a

#b

#c

#d

-------------------------


**kwargs

- dictionary - whose keys become separate keyword arguments and the values become values of these arguments.

- 파라미터 명을 같이 보낼 수 있다. 

- kwargs는 딕셔너리 형태로 전달된다.


<ex>-------------------------

def print_param2(**kwargs):

    print kwargs

    print kwargs.keys()

    print kwargs.values()

    for name, value in kwargs.items():

        print "%s : %s" % (name, value)

 

print_param2(first = 'a', second = 'b', third = 'c', fourth = 'd')

 

#{'second': 'b', 'fourth': 'd', 'third': 'c', 'first': 'a'}

#['second', 'fourth', 'third', 'first']

#['b', 'd', 'c', 'a']

#second : b

#fourth : d

#third : c

#first : a

-------------------------



응용1

<ex>-------------------------

def print_param3(*args, **kwargs):

    print args

    print kwargs

 

print_param3('a', 'b')

#('a', 'b')

#{}


print_param3(third = 'c', fourth = 'd')

#()

#{'fourth': 'd', 'third': 'c'}

 

print_param3('a', 'b', third = 'c', fourth = 'd')

#('a', 'b')

#{'fourth': 'd', 'third': 'c'}

-------------------------


응용2

<ex>-------------------------

def print_param4(a, b, c):

    print a, b, c

 

p = ['a', 'b', 'c']

print_param4(*p)

#a b c

 

p2 = {'c' : '1', 'a' : '2', 'b' : '3'}

print_param4(**p2)

#2 3 1

-------------------------


참고:

https://jhproject.tistory.com/109

https://stackoverflow.com/questions/3394835/use-of-args-and-kwargs

Comments