Python - parameter (*, **)

우야·2021년 6월 26일
0
post-custom-banner

장고 orm, 파이썬코드를 보면 *arg, **kwargs를 확인할 수 있음
의미 : 파라미터를 몇개 받을지 모르는경우 사용하는것인데... 함수의 매개변수가 정해지지 않고 여러개 받고 싶을때 사용할 수 있다로 볼수 있음

*args

parameter로 여러 값을 넣고, 함수에서 tuple로 사용할 수 있음

def test(*args):
    print(args)
    
test('a','b', 'c')

#결과 ('a','b','c')

dict타입과 같은 변수를 자체로 넘기면 tuple내에서 데이터 1개로 취급

def test(*args):
    print(args)
    
a = {'name': 'a', 'name2':'b', 'name3':'c'}
test(a)

#결과 ({'name': 'a', 'name2':'b', 'name3':'c'}, )

dict변수에 포인터를 붙여서 하용하면 dict변수내의 key값만 빠져서 tuple로 사용

def test(*args):
    print(args)
    
a = {'name': 'a', 'name2':'b', 'name3':'c'}
test(*a)

#결과 ('name', 'name2', 'name3')

**kwargs

parameter의 이름과 같이 보낼수 있고, 딕셔너리형태로 보낼수 있음

def test(**kwargs):
    print(args)
    
test(name='a', name2='b', name3='c')

#결과 {'name': 'a', 'name2':'b', 'name3':'c'}

이미 dict값을 가지고 있고, 함수에 변수 자체를 넘기고 싶을때

def test(**kwargs):
    print(args)
    
a = {'name': 'a', 'name2':'b', 'name3':'c'}
test(**a)

#결과 {'name': 'a', 'name2':'b', 'name3':'c'}
profile
Fullstack developer
post-custom-banner

0개의 댓글