위치 인수(positional arguments), 가변 인수(variable length arguments), 가변 키워드 인수(variable length keyword arguments)

강민성·2021년 12월 3일
0

위치 인수(positional arguments):
함수를 호출할 떄 전달되는 값이 매개변수에 순서대로 전달되는 인수

가변 인수(variable length arguments): *인수명
함수를 호출할 때마다 인수의 개수를 바꿔서 전달할 수 있는 인수

가변 키워드 인수(variable length keyword arguments): **인수명
함수를 호출할 때 딕셔너리 형태의 여러 인수를 전달할 있는 인수

이러한 종류의 인수들을 활용하여 함수를 호출할 때는 다음과 같은 순서를 지켜야 한다.
초기값이 설정되지 않은 위치 인수 > 초기값이 설정된 위치 인수 > 가변 인수 > 가변 키워드 인수

예시

1)

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)

위 함수는 가변 인수가 위치 인수 앞에 위치했기 때문에 다음과 같은 에러가 발생한다.

TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'

따라서 다음과 같이 인수의 위치를 변경하면 에러를 해결할 수 있다.

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)

2)

def func_param_with_kwargs(name, age, **kwargs, address=0):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

위 함수는 가변 키워드 인수가 위치 인수 앞에 위치했기 때문에 다음과 같은 에러가 발생한다.

SyntaxError: invalid syntax

따라서 다음과 같이 인수의 위치를 변경하면 에러를 해결할 수 있다.

def func_param_with_kwargs(name, age, address=0, **kwargs):
    print("name=",end=""), print(name)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")

3)

def mixed_params(name="아이유", *args, age, **kwargs, address):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")

위 함수는 초기값이 설정된 위치 인수, 가변 인수, 초기값이 설정되지 않은 위치 인수, 가변 키워드 인수, 초기값이 설정되지 않은 위치 인수 순으로 인수가 나열되어 있다.

따라서 다음과 같은 에러가 발생한다.

SyntaxError: invalid syntax

다음과 같이 인수의 위치를 변경하면 에러를 해결할 수 있다.

def mixed_params(age, *args, name="아이유", address, **kwargs):
    print("name=",end=""), print(name)
    print("args=",end=""), print(args)
    print("age=",end=""), print(age)
    print("kwargs=",end=""), print(kwargs)
    print("address=",end=""), print(address)

mixed_params(20, "정우성", "01012341234", "male", address="seoul", mobile="01012341234")
profile
Back-end Junior Developer

0개의 댓글