[python] function parameter #1 (default parameter)

hamingu·2021년 4월 16일
2

default parameter

함수를 만들 때는 보통 아래와 같이 입력 값을 받을 수 있도록 매개변수를 지정한다.

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들 중 제일 마지막에 입력해야한다.

default 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의 순서를 꼭 지켜줘야 한다.

profile
프로그래밍구

0개의 댓글