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