본문 바로가기
판다스/기초 파이썬

[python] 6.3. 함수 - 기본값

by 김판다t 2024. 11. 13.

데이터 분석 입문을 위한 기초적인 파이썬 내용을 다룹니다. 데이터 분석은 주로 파이썬의 라이브러리인 판다스를 활용해 이루어지며, 이를 위해 기본적인 파이썬 개념에 대한 이해가 필요합니다. 하지만 이것은 파이썬을 완벽하게 숙달해야 한다는 의미는 아닙니다. 그렇기에 판다스와 데이터 분석에 입문할 수 있도록 핵심 파이썬 개념을 간략하게 제공할 것입니다.


 

6.3. 기본값

기본값

 

파이썬에서는 함수의 매개변수에 기본값을 설정할 수 있어, 인수를 일일이 입력하지 않아도 함수에 값을 전달할 수 있습니다. 기본값은 함수 생성 시 매개변수에 설정된 값으로, 매개변수에 따로 인수가 전달되지 않을 때 사용됩니다. 이 기능 덕분에 필요한 매개변수에만 인수를 전달하고 나머지는 기본값을 적용하여 유연한 함수 호출이 가능합니다. 

 

기본값은 함수를 정의할 때 매개변수에 = 연산자와 함께 지정하여 설정할 수 있습니다. 이렇게 설정된 기본값은 함수 호출 시 해당 매개변수에 인수를 제공하지 않아도 자동으로 사용됩니다. 예시를 통해 알아보겠습니다. 

# x에 0, y에 1, z에 2를 기본값으로 설정한 함수 func
def func(x=0, y=1, z=2):  
    return x + (2 * y) + (3 * z)

 

 

함수 func에서 x, y, z의 기본값은 각각 0, 1, 2로 설정되어 있습니다. 인수를 전달하지 않은 매개변수에는 자동으로 기본값이 적용되므로, 필요한 매개변수에만 인수를 전달할 수 있습니다. 예를 들어, y에만 3을 전달해도 x z에는 각각 0과 2가 전달되어 12를 반환합니다. 

func(y=3) # 출력 결과: 12 (x는 기본값 0, z는 기본값 2가 적용됨)

 

이렇게 일부 매개변수에만 인수를 전달하고 나머지는 기본값을 적용할 수 있으므로, 매개변수가 많은 함수도 간편하게 사용할 수 있습니다.

 

함수 호출 방식의 예시

파이썬에서 주로 사용하는 함수 호출 방법은 다음과 같습니다.

# 순서에 맞게 인수만 입력
func(1, 2, 3)  # 출력 결과: 14

# 순서와 관계없이 매개변수에 인수를 지정
func(y=3, x=1, z=2)  # 출력 결과: 13

# x는 순서에 맞게 입력하고, y와 z는 매개변수에 인수를 지정
func(1, z=2, y=3)  # 출력 결과: 13

# y만 매개변수에 인수를 지정하고 x와 z는 기본값 사용
func(y=3)  # 출력 결과: 12 (x는 기본값 0, z는 기본값 2가 적용됨)

# x만 순서에 맞게 입력하고, y와 z는 기본값 사용
func(2)  # 출력 결과: 10 (y는 기본값 1, z는 기본값 2가 적용됨)

인수만으로 함수를 호출하면 코드가 간결해지지만, 이 경우 각 인수가 어떤 역할을 하는지 명확하지 않아 코드의 의미가 모호해질 수 있습니다. 특히 함수에 많은 매개변수가 있을 때는 매개변수를 함께 명시하여 호출하는 것이 좋습니다.

 
기본값으로 동적으로 설정하는 방법

이전 예시의 func 함수는 기본값이 x=0, y=1, z=2와 같은 단일 값이었습니다. 그러나 파이썬에서는 기본값으로 None을 지정한 후, 함수 내부에서 조건을 통해 필요한 기본값을 설정하여 더욱 유연하게 함수를 사용할 수 있습니다. 이렇게 하면 함수 호출 시 매개변수에 값이 전달되지 않았을 때도 동적으로 기본값을 처리할 수 있습니다.

 

아래 정의된 create_order 함수는 식사 주문을 생성하는 함수로, 인원수 people, 주문할 메뉴 menu, 주문 수량 quantity를 매개변수로 받습니다. 매개변수 people은 기본값이 없고, menu는 기본값으로 '백반'이 설정되어 있으며, quantity None으로 설정되어 있지만 함수 내부에서 인원수인 people의 값으로 설정됩니다. 이렇게 하면 입력된 인원수에 맞추어 수량의 기본값이 가변적으로 적용됩니다. 

 

# 주문을 생성하는 함수 정의
def create_order(people, menu='백반', quantity=None):  
    # quantity가 None이면 인원수로 기본값 설정
    if quantity is None:  
        quantity = people

    # 메뉴와 수량을 반환
    return f'{menu} {quantity}개'

 

아래 코드들을 실행해 보면, 매개변수 quantity에 값이 입력되면 해당 값이 주문 개수로 출력되고, quantity에 값이 입력되지 않으면 people에 입력된 인원수에 맞춰 기본값이 적용됩니다.

 

# quantity에 값을 입력하면 출력 결과는 '김치찌개 5개'
create_order(people=2, menu='김치찌개', quantity=5)

# quantity에 값이 입력되지 않을 때는 인원수가 출력
create_order(people=2) # 출력 결과: '백반 2개'
create_order(people=3, menu='비빔밥') # 출력 결과: '비빔밥 3개'

 

기본값이 None인 경우, 종종 함수 내에서 동적으로 할당하기 위한 의도로 사용됩니다.


 

유튜브에서 판다스 강의 중입니다.

https://www.youtube.com/@KimPandas