[사전스터디-Python] 5. 가변 인수, 언패킹, 키워드 인수

문성호·2020년 8월 2일
  • 함수에 대한 기본적인 사용방법은 이미 알고 있으니 생략.
  • 위치 인수와 키워드 인수, 언패킹에 대해서 정리.
  • 함수에 넘기는 매개변수는 변수 단위로 넘길 수도 있지만, 리스트나 튜플 단위로 넘길 수도 있다.
    또는 고정되어 있지 않고 가변한 갯수로 인수를 넘길 수도 있다.

1. 가변 인수와 언패킹

def print_numbers(*args):
	for x in args:
    	print(x)
        

print_numbers(10,20,30)
print_numbers(10,20,30,40)

myNum = [40,50,60]

print_numbers(*myNum)

  • print_numbers 함수에 여러 인자들을 넘길 때, 상황에 따라 인수의 갯수가 가변적일 수 있다.
  • 위와 같이 print_numbers 함수에 *args를 인자로 받으면 함수 내에서 자연스럽게 튜플 형태로
    인자들을 받아 처리하게 만들 수 있다.
  • 또는 리스트나 튜플을 바로 넘겨서 함수 안에서 쓸 수 있게 만드는 것을 Unpacking이라고 한다.

2. 키워드 인수

def personal_info(name, age, address):
  print('이름: ', name)
  print('나이: ', age)
  print('주소: ', address)
  

personal_info(age = 29, name = "문성호", address = "인천")
  • 키워드 인수는 인수의 순서와 용도를 매번 기억하지 않아도 되게끔 하는 기능.
  • 위 예와 같이 인수가 name, age, address라고 하더라도, 실제 함수를 호출할 때는
    이름만 밝혀준다면 순서를 엇갈려도 된다.

3. 딕셔너리 언패킹

def personal_info(**kwargs):
    if 'name' in kwargs:    # in으로 딕셔너리 안에 특정 키가 있는지 확인
        print('이름: ', kwargs['name'])
    if 'age' in kwargs:
        print('나이: ', kwargs['age'])
    if 'address' in kwargs:
        print('주소: ', kwargs['address'])
        
 x = {'name' : '문성호', 'age' : 29, 'address' : '인천'}

personal_info(**x)
  • 리스트, 튜플 언패킹과 마찬가지로 딕셔너리도 함수 안에서 받을 수 있는데,
    딕셔너리로 언패킹을 사용할 때는 딕셔너리 변수 앞에 **를 붙인 후 사용하면 된다.
profile
오늘을 모아 내일을

0개의 댓글