TIL | Python | 위치 인수와 가변 인수

이도운·2021년 12월 28일
0

TIL

목록 보기
6/73
post-thumbnail
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)
# 문제가 있다

위 코드는 문제가 있다. 어디에 문제가 있을까? 가변 인자가 위치 인자 앞에 있다는 것이 문제다. 왜 문제일까? 생각해보자. 저 코드를 실행한다면 컴퓨터는 어떻게 판단해야 할까? name="정우성"이 될 것이다. 그렇다면 *args는 어디까지로 봐야할까? 사람이라면 나이에 해당하는 20 이전까지 해당한다고 바로 판단이 가능하지만 컴퓨터는 그런 생각이 불가능하다. 때문에 위 코드대로라면 컴퓨터는 나이에 해당 되는 인자까지 모두 가변 인자에 묶을 것이다.

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("정우성", 20, "01012341234", "seoul")
# 문제를 해결했다

문제를 해결하는 방법은 아주 쉽다. 순서를 바꿔주면 된다. 위치 인수를 가변 인수 앞에 항상 두도록 하면 된다. 이는 항상 기억하고 있어야 할 사항이다.

profile
⌨️ 백엔드개발자 (컴퓨터공학과 졸업)

0개의 댓글