udemy.py_Section 6 - (7) *args & **kwargs

Gomi_kery·2022년 9월 16일
0

udem.py

목록 보기
26/28
post-thumbnail

💥 매개 변수와 인자의 차이는 🦅을 참조

아래의 스크립트에서는 매개 변수와 인자가 3개이지만

def value_added_tax (order1, order2, order3):
	return sum((order1, order2, order3)) * 0.1
    
interest(200,12,500)
> 

매개 변수 or 인자의 수가 nn개 이상이거나 가변적일 때,
많은 매개 변수를 할당하여 해결할 수 있지만
매개변수와 인자의 수가 일치 하지않아 에러가 발생할 수 있다.

이런 경우 해결 방법으로는

  • 임의의 갯수로 인자를 받을 수 있도록 설정하는
    *args를 사용할 수 있다

*args

  • 임의 개수 인자. (*argument)
  • 사용자가 입력한 인자를 함수 내부에 Tuple로 처리.
  • * + 이름 형태(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

  • 키워드 인자 (keyword argument)
  • 사용자가 입력한 인자를 함수 내부에 Dictionary로 처리
  • ** + 이름 형태(*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]))

는 원하는대로 동작되지 않는데 동작되려면 어떻게 해야할까...
강의를 더 들으면 해결할 수 있겠지?

profile
QA. 손으로 할 수 있는 모든 것을 좋아합니다.

0개의 댓글