Python - 디폴트 매개변수(Default parameters)

파이썬에서 Default parameters는 기본 값이 정의된 인자를 말합니다. 기본 값이 미리 정의되어있기 때문에, 함수를 호출할 때 인자를 명시하지 않아도 기본 값으로 인자가 전달됩니다.

1. syntax

디폴트 매개변수를 사용하려면 param=value처럼, 함수를 정의할 때 인자에 기본 값을 함께 정의하면 됩니다.

def function_name(param1, param2=value2, param3=value3, ...):

모든 인자를 디폴트 매개변수로 설정하고 싶다면 다음과 같이 함수를 정의할 수 있습니다.

def function_name(param1=value1, param2=value2):

하지만, 일반 인자와 디폴트 매개변수가 섞어서 사용할 때는 디폴트 매개변수는 일반 인자 다음에 정의해야 합니다. 디폴트 매개변수를 앞에 정의하면 컴파일러가 일반 매개변수와 디폴트 매개변수를 구분할 수 없기 때문입니다.

만약 아래와 같이 기본 인자 앞에 디폴트 매개변수를 정의하면 컴파일 과정에서 에러가 발생합니다.

def function_name(param1=value1, param2):
  print("Hello")

2. Default parameters 예제

아래는 함수를 정의할 때 디폴트 매개변수를 사용하는 예제입니다. 함수를 호출할 때 msg 인자를 전달하지 않으면, 기본 값으로 "Hello"가 전달된 것처럼 동작합니다. 명시적으로 msg 인자를 전달하면 그 값으로 인자가 전달됩니다.

def hello(name, msg="Hello"):
    print(f"{name}, {msg}")

hello("Adele")
hello("Adele", "Hi")

Output:

Adele, Hello
Adele, Hi

3. 2개 이상의 Default parameter 사용 예제

아래와 같이 함수의 모든 인자를 디폴트 매개변수로 정의할 수 있습니다. 함수를 호출할 때 인자를 전달하지 않거나, 1개 또는 2개를 전달할 수 있습니다.

def hello(name="Jone", msg="Hello"):
    print(f"{name}, {msg}")

hello()
hello("Adele")
hello("Adele", "Hi")

Output:

Jone, Hello
Adele, Hello
Adele, Hi

다음과 같이 모든 인자가 디폴트 매개변수일 때, 함수 호출 시 1개의 인자만 전달한다면, 그 인자는 첫번째 인자가 됩니다. 그리고 두번째 인자는 기본 값으로 전달됩니다.

def hello(name="Jone", msg="Hello"):
    print(f"{name}, {msg}")

hello("Adele")

Output:

Adele, Hello

만약 첫번째 인자 name을 기본 값을 사용하고, 두번째 인자 msg를 직접 전달하고 싶다면 아래와 같이 msg="Hello"처럼 어떤 인자인지 명시해주면 됩니다.

def hello(name="Jone", msg="Hello"):
    print(f"{name}, {msg}")

hello(msg="Hi")

Output:

Jone, Hi

또한, 아래와 같이 인자 이름을 함께 명시해주면, 인자의 위치가 바뀌어도 괜찮습니다.

def hello(name="Jone", msg="Hello"):
    print(f"{name}, {msg}")

hello(msg="Hi", name="Adele")

Output:

Adele, Hi
Loading script...
codechachaCopyright ©2019 codechacha