함수를 만들 때는 보통 아래와 같이 입력 값을 받을 수 있도록 매개변수를 지정한다.
def mingu_info(name, age):
pass
# mingu_info라는 함수에 name, age라는 매개변수를 지정했다.
# 이 함수를 호출하려면 name, age에 해당하는 입력 값을 줘야한다.
매개변수는 입력 값을 전달하기 전에는 어떤 값도 가지고 있지 않다.
다만, default parameter라고 하여 매개변수의 입력 값을 아래와 같이 초기에 설정할 수 있다.
def mingu_info(name, age, gender = "남자"):
print("이름 :", name)
print("나이 :", age)
print("성별 :", gender)
mingu_info("김하민", 29)
#mingu_info를 호출하기 위해서는 초기 값이 설정된 gender를 제외한 name, age 값만 입력하면 된다.
#결과값
이름 : 김하민
나이 : 29
성별 : 남자
🚨 주의해야 할 점
default parameter는 parameter들 중 제일 마지막에 입력해야한다.
def mingu_info(name, age, gender = "남자"):
print("이름 :", name)
print("나이 :", age)
print("성별 :", gender)
위 함수를 호출하기 위해서 name, age의 값만 입력해주면 되지만 그렇다고 gender 매개변수에 값을 새로 입력하지 못하는 건 아니다.
def mingu_info(name, age, gender = "남자"):
print("이름 :", name)
print("나이 :", age)
print("성별 :", gender)
mingu_info("김하민", 29, "알 수 없음")
#gender 매개변수 위치에 "알 수 없음"을 값으로 넣어 호출하면 아래와 같이 호출된다.
이름 : 김하민
나이 : 29
성별 : 알 수 없음
def mingu_info(name, gender = "남자", age):
print("이름 :", name)
print("나이 :", age)
print("성별 :", gender)
# 우선 위와 같이 함수를 선언하면 SyntaxError: non-default argument follows default argument가 발생한다.
# 즉 이유 여하와 상관없이 실행되지 않는다.
초기 값이 설정된 매개변수는 함수를 호출할 때 굳이 그 매개변수에 입력 값을 주지 않아도 된다고 했다.
그렇다면 default parameter(초기 값이 설정된 매개변수)가 다른 매개변수의 사이에 위치했을 경우 함수를 호출하기 위해 아래와 같이 입력하면
mingu_info("김하민",29)
기존의 29의 입력 값을 받던 age라는 매개변수의 위치가 2번째가 아닌 3번째에 있기 때문에 29라는 값을 age에 넣어야할 지 gender에 넣어야 할 지 인식할 수 없게 된다.
즉, default parameter가 있는 함수를 선언할 때에는 default parameter에 입력 값을 주지 않아도 된다는 규칙을 지키기 위해 parameter의 순서를 꼭 지켜줘야 한다.