💥 매개 변수와 인자의 차이는 🦅을 참조
아래의 스크립트에서는 매개 변수와 인자가 3개이지만
def value_added_tax (order1, order2, order3):
return sum((order1, order2, order3)) * 0.1
interest(200,12,500)
>
매개 변수 or 인자의 수가 nn개 이상이거나 가변적일 때,
많은 매개 변수를 할당하여 해결할 수 있지만
매개변수와 인자의 수가 일치 하지않아 에러가 발생할 수 있다.
이런 경우 해결 방법으로는
*args
를 사용할 수 있다*args
*
+ 이름
형태(price, age)로 사용 가능하지만 관례 및 PEP 8에 따라 args로 사용def value_added_tax(*args):
return sum((args)) * 0.1
return을 print()로 바꾸면, (*args) 의 동작을 확인해볼 수 있음.
def value_added_tax(*args):
print(args)
value_added_tax(200,12,315)
> (200, 12, 315) # 인자를 tuple로 처리
*args
가 인자를 Tuple로 처리했기 때문에 unpacking을 사용할 수 있음.**kwargs
**
+ 이름
형태(*food, game)로 사용 가능하지만 관례 및 PEP 8에 따라 kwargs로 사용def love_animal(**kwargs):
if 'animal' in kwargs:
print('내가 좋아하는 동물은 {} 입니다'.format(kwargs['animal']))
else:
print('이건 동물이 아니야!')
love_animal(animal='cat',food='pizza',game='wow')
> 내가 좋아하는 동물은 cat 입니다
# kwargs의 데이터는 아래와 같이 들어가 있음
# {'animal': 'cat', 'food': 'pizza', 'game': 'wow'}
*args
와 **kwargs
를 모두 사용하여 함수를 만들 수도 있음.
def my_frige(*args,**kwargs):
# 매개 변수가 어떻게 처리되는 지 확인용
print(args)
print(kwargs)
# 동작
print('냉장고에는 {}개의 {}가 있어요.'.format(args[0],kwargs['food']))
이제 내가 원하는 것
def my_frige(**kwargs,*args):
print('{}가 {}개 있어요.'.format(kwargs['food'],args[0]))
는 원하는대로 동작되지 않는데 동작되려면 어떻게 해야할까...
강의를 더 들으면 해결할 수 있겠지?