프로그래밍/Python

파이썬 함수, 레고 블록처럼 조립하고 재사용하는 마법!

shimdh 2025. 2. 24. 16:48
728x90

파이썬 프로그래밍의 핵심 개념 중 하나인 함수! 함수는 특정 작업을 수행하는 코드 블록으로, 마치 레고 블록처럼 필요할 때마다 조립하고 재사용하여 복잡한 프로그램을 효율적으로 구축할 수 있도록 도와줍니다. 이 글에서는 파이썬 함수의 정의, 호출, 다양한 매개변수 활용법, 가변 인자 리스트까지 꼼꼼하게 정리하여 여러분의 파이썬 실력을 한 단계 업그레이드해 드리겠습니다.

1. 함수 정의: 나만의 레시피 만들기

함수 정의는 마치 레시피를 작성하는 것과 같습니다. 어떤 재료(매개변수)를 넣고 어떤 과정을 거쳐 어떤 결과(반환값)를 만들어낼지 정의하는 것이죠. 파이썬에서 함수를 정의할 때는 def 키워드를 사용합니다.

1.1. 기본 함수 정의

def 함수이름(매개변수1, 매개변수2, ...):
    # 실행할 코드 (함수 본문)
    return 반환값
  • def 키워드로 함수를 정의합니다.
  • 함수이름은 함수를 식별하는 이름입니다.
  • 매개변수는 함수에 전달되는 입력값을 나타냅니다.
  • 함수 본문은 함수의 실제 동작을 수행하는 코드 블록입니다.
  • return 문은 함수 결과를 반환합니다.

1.2. 예시: 두 수의 합을 구하는 함수

def add_numbers(a, b):
    """
    두 개의 숫자를 인자로 받아 그 합을 반환하는 함수입니다.
    """
    sum = a + b  # 두 수를 더합니다.
    return sum   # 계산된 합을 반환합니다.

위 예제에서 add_numbers 함수는 두 개의 매개변수 ab를 받아 그 합을 계산하고, return 문을 사용하여 계산된 합을 반환합니다. 함수 본문에는 함수의 실제 동작을 수행하는 코드가 들어갑니다. 주석("""Docstring""")을 사용하여 함수에 대한 설명을 추가하는 것은 좋은 습관입니다. 이러한 주석을 "독스트링(Docstring)"이라고 하며, 함수의 기능과 사용법을 문서화하는 데 도움을 줍니다.

2. 함수 호출: 레시피 활용하기

정의된 함수를 사용하려면 '호출'해야 합니다. 함수 호출은 마치 레시피를 사용하여 요리하는 것과 같습니다. 레시피(함수)에 필요한 재료(인자)를 제공하고, 레시피에 적힌 순서대로 요리(함수 실행)하여 원하는 결과(반환값)를 얻는 것이죠. 함수 호출은 함수 이름과 괄호 안에 인자를 전달하여 이루어집니다.

2.1. 함수 호출 방법

result = 함수이름(인자1, 인자2, ...)

2.2. 예시: add_numbers 함수 호출

result = add_numbers(3, 5)  # add_numbers 함수를 호출합니다.
print(result)              # 계산된 결과(8)을 출력합니다.

위 코드에서 add_numbers(3, 5)add_numbers 함수를 호출하면서 인자 3과 5를 전달합니다. 함수는 전달받은 인자를 사용하여 덧셈 연산을 수행하고, 그 결과를 반환합니다. 반환된 값은 변수 result에 저장되고, print(result)를 통해 화면에 출력됩니다.

3. 매개변수와 인자: 함수에게 재료 전달하기

3.1. 매개변수와 인자의 차이점

  • 매개변수(Parameter): 함수가 정의될 때 사용하는 변수입니다. 함수 정의 부분에서 함수가 받을 값을 나타내는 역할을 합니다.
  • 인자(Argument): 실제로 함수를 호출할 때 전달하는 값입니다. 함수 호출 시 매개변수에 전달되는 값입니다.

3.2. 다양한 매개변수 활용법

파이썬 함수는 위치 기반 인자, 기본값을 갖는 매개변수, 키워드 인자 등 다양한 방식으로 인자를 받을 수 있습니다.

  • 위치 기반 인자: 함수 호출 시 인자의 순서대로 매개변수에 전달됩니다.
  • 기본값을 갖는 매개변수: 함수 정의 시 매개변수에 기본값을 지정하여, 함수 호출 시 인자를 전달하지 않아도 기본값이 사용되도록 할 수 있습니다.
  • 키워드 인자: 함수 호출 시 인자의 이름을 명시하여 특정 매개변수에 값을 전달할 수 있습니다.

3.3. 예시: 기본값을 갖는 매개변수

def greet(name="Guest"):  # name 매개변수의 기본값은 "Guest"입니다.
    """
    이름을 인자로 받아 인사말을 출력하는 함수입니다.
    만약 이름이 주어지지 않으면 "Guest"로 인사합니다.
    """
    print(f"Hello, {name}!")

greet()          # 인자를 전달하지 않았으므로 기본값 "Guest"가 사용됩니다.
greet("Alice")   # "Alice"라는 인자를 전달했으므로 "Alice"로 인사합니다.

4. 가변 인자 리스트: 여러 개의 재료를 한 번에 전달하기

때로는 함수가 받아야 하는 인자의 개수가 정해져 있지 않은 경우가 있습니다. 이때 가변 인자 리스트를 사용하면 여러 개의 인자를 한 번에 전달할 수 있습니다. 가변 인자 리스트는 *args (위치 기반 가변 인자)와 **kwargs (키워드 기반 가변 인자) 두 가지 형태가 있습니다.

4.1. *args (위치 기반 가변 인자)

*args는 여러 개의 위치 기반 인자를 튜플 형태로 받습니다.

def print_args(*args):
    """
    여러 개의 위치 기반 인자를 받아 출력하는 함수입니다.
    """
    for arg in args:
        print(arg)

print_args(1, 2, 3)  # 1, 2, 3을 인자로 전달합니다.
# 출력:
# 1
# 2
# 3

4.2. **kwargs (키워드 기반 가변 인자)

**kwargs는 여러 개의 키워드 기반 인자를 딕셔너리 형태로 받습니다.

def print_kwargs(**kwargs):
    """
    여러 개의 키워드 기반 인자를 받아 출력하는 함수입니다.
    """
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_kwargs(name="Alice", age=30)  # name과 age를 키워드 인자로 전달합니다.
# 출력:
# name: Alice
# age: 30

결론: 함수는 파이썬 프로그래밍의 핵심 도구

함수는 파이썬 프로그래밍에서 코드의 재사용성을 높여 개발 시간을 단축하고, 프로그램의 구조를 개선하여 코드의 가독성과 유지보수성을 향상시키는 핵심 도구입니다. 다양한 형태의 매개변수와 인자를 활용하여 함수를 유연하게 만들 수 있습니다. 프로그래밍 실습 시 함수를 적극적으로 활용하여 자신만의 유용한 도구들을 만들어 보세요!

728x90