본문 바로가기

Programming/[Python]

[Python] 함수 - arguments

 

Positional arguments

 

함수 호출 시 인수 순서대로 매개변수에 값을 전달. (위치 기반)

 

# positional
def checkout(name, age, birth):
  print(f'{name}, {age}, {birth}')

checkout('kim', 99, '2020/07/17')

첫 번째 인수 'kim' 은 name 매개변수에 전달

두 번째 인수 99 는 age 매개변수에 전달

세 번째 인수 '2020/07/17' 은  birth 매개변수에 전달

 

 

 Keyword arguments

 

함수 호출 시 매개변수 이름대로 인자를 매칭. (키워드 기반)

 

# keyword
def checkout(name, age, birth):
  print(f'{name}, {age}, {birth}')

checkout(name='kim', age=99, birth='2020/07/17')

위치기반 인수와 혼용하여 입력 시

항상 위치기반 인수가 먼저 입력되어야 함

 

# Error
def checkout(name, age, birth):
  print(f'{name}, {age}, {birth}')

checkout(name='kim', 99, '2020/07/17')

# positional + keyword
def checkout(name, age, birth):
  print(f'{name}, {age}, {birth}')

checkout('kim', 99, birth='2020/07/17')

 

 

Optional(*args, **kwargs)

 

추가적으로 임의의 위치기반 인수를 전달 받을 때 관례적으로 *args를 매개변수로 사용

입력받은 인수를 tuple 형식으로 반환

# optional + positional
def check(name, age, birth, *args):
  print(f'{name}, {age}, {birth}')
  print(args)
  print(f'입력된 선택적 위치기반 매개변수의 개수 : {len(args)}')


check('kim', 99, '2021/07/17', 'input args!')

마찬가지로 임의의 키워드기반 인수를 전달 받을 때 **kwargs를 매개변수로 사용

입력받은 인수를 dictionary 형식으로 반환

# optional + keyword
def checkout(name, price, time, **kwargs):
  print(f'{name}님 {price}원 입니다. 시간은 {time} 입니다.')
  print(kwargs)
  for key, value in kwargs.items():
    print(f'key:{key}/ value:{value}')
    print(f'{len(kwargs)}개의 선택적 키워드 매개변수가 있습니다.')

checkout(name='kim', price='10000', time='17:51', no = 12312)