python 위치인수와 가변인수

최창현·2021년 12월 29일
0

위치 인수란

위치 인수란 함수를 호출할 때 전달되는 인자들이 매개변수에 순서대로 전달되는
인수를 의미하며 가장 일반적인 방식이다.


가변 인수란

가변 인수란 인수를 담을 수 있는 개수가 변할 수 있는 인수로 함수를 호출 할 때
인수의 개수를 다양하게 바꿔가며 전달할 수 있는 방식이다.

가변 인수(*args)

여러개의 일반 인자를 받을 수 있는 인수로 함수 내부에서는 해당 인수를 튜플로 받은것처럼 인식한다.

가변 키워드 인수(** kwagrs)

키워드로 이루어진 여러 개의 인자를 받을 수 있는 인수이다.


다음과 같은 코드를 실행하면 에러가 발생한다.

def func_param_with_var_args(name, *args, age):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
# error
Traceback (most recent call last):
  File "C:/Users/Choi/AppData/Local/Programs/Python/Python39/5.py", line 5, in <module>
    func_param_with_var_args("정우성", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'

에러가 발생한 이유는 다음과 같다.

args는 여러 개의 인자를 받을 수 있는 가변 인수이기 때문에 사용자가 몇 개의
인수를 입력할지 알 수 없어서
args 보다 뒤에 위치한 'age'에게 할당할 인자를
*agrs가 모두 가져가게 된다.

그렇기 때문에 뒤에 있던 non-default value parameter 를 default value parameter보다 앞에 정의해 주어야 한다.


에러 해결 방법

age와 *agrs의 순서 바꾸기

def func_param_with_var_args(name, age, *args):
  print("name=",end=""), print(name)
  print("args=",end=""), print(args)
  print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)

실행 결과

# Result
name=정우성
args=('seoul', 20)
age=01012341234
profile
chch_oi

0개의 댓글