Post

파이썬 기본 문법: 함수 정의와 호출

함수의 정의와 호출 방법. 그리고 함수를 사용하는 다양한 사례

함수(Function)는 코드를 재사용 가능하게 만들고, 프로그램의 가독성과 유지보수를 향상시키는 중요한 도구입니다. 이번 글에서는 함수의 정의호출 방법을 살펴보며, 함수를 사용하는 다양한 사례를 알아보겠습니다.

1. 함수란?

  • 함수(Function): 특정 작업을 수행하는 코드 블록.
  • 장점:
    • 코드의 재사용성 증가.
    • 코드의 가독성유지보수성 향상.
    • 반복 작업의 간소화.

2. 함수 정의와 호출

1) 함수 정의

함수는 def 키워드로 정의하며, 이름과 괄호(())를 사용합니다.
필요에 따라 매개변수반환값을 포함할 수 있습니다.

기본 구조

1
2
3
def 함수이름(매개변수):
    실행할 코드
    return 반환값

예제

1
2
3
4
5
6
def greet():
    print("Hello, World!")

# 함수 호출
greet()
# 출력: Hello, World!

2) 매개변수(Parameter)
매개변수는 함수에 데이터를 전달하기 위해 사용됩니다.

1
2
3
4
5
6
def greet(name):
    print(f"Hello, {name}!")

# 함수 호출
greet("Alice")  # 출력: Hello, Alice!
greet("Bob")    # 출력: Hello, Bob!

3. 매개변수의 종류

1) 기본값 매개변수 (Default Parameter)
매개변수에 기본값을 지정할 수 있습니다. 호출 시 값을 전달하지 않으면 기본값이 사용됩니다.

1
2
3
4
5
def greet(name="Guest"):
    print(f"Hello, {name}!")

greet()          # 출력: Hello, Guest!
greet("Alice")   # 출력: Hello, Alice!

2) 가변 매개변수 (*args)
가변 매개변수는 개수에 제한 없이 값을 전달받을 수 있습니다.

1
2
3
4
5
6
def add_numbers(*args):
    total = sum(args)
    print(f"Total: {total}")

add_numbers(1, 2, 3)        # 출력: Total: 6
add_numbers(4, 5, 6, 7, 8)  # 출력: Total: 30

3) 키워드 가변 매개변수 (kwargs)**
키와 값을 함께 전달받을 수 있습니다.

1
2
3
4
5
6
7
8
9
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, job="Engineer")
# 출력:
# name: Alice
# age: 25
# job: Engineer

4. 반환값 (Return Value)

함수는 return 키워드를 사용하여 결과를 반환할 수 있습니다. 반환값이 없으면 None이 반환됩니다.

예제

1
2
3
4
5
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 출력: 8

다중 반환값

1
2
3
4
5
6
def calculate(a, b):
    return a + b, a - b, a * b, a / b

add, subtract, multiply, divide = calculate(10, 5)
print(add, subtract, multiply, divide)
# 출력: 15 5 50 2.0

5. 함수의 활용

1) 재귀 함수 (Recursive Function)
함수 안에서 자기 자신을 호출하는 함수로, 반복 작업에 유용합니다.

1
2
3
4
5
6
def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 출력: 120

2) 람다 함수 (Lambda Function)
익명 함수로, 간단한 작업을 위해 사용됩니다.

1
2
3
4
5
6
7
8
# 람다 함수 정의 및 사용
square = lambda x: x ** 2
print(square(4))  # 출력: 16

# 람다 함수와 map() 활용
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]

6. 함수 설계 팁

  1. 의미 있는 이름 사용:
    함수 이름은 함수가 수행하는 작업을 명확히 나타내야 합니다.
    1
    2
    
    def calculate_area(radius):
        return 3.14 * radius ** 2
    
  2. 하나의 작업에 집중:
    함수는 하나의 작업만 수행해야 합니다.
    여러 작업을 하나의 함수에서 처리하면 가독성이 떨어질 수 있습니다.

  3. 주석과 문서화:
    함수의 동작을 이해하기 쉽게 주석이나 docstring을 작성합니다.
    1
    2
    3
    4
    5
    
    def greet(name):
        """
        주어진 이름으로 인사 메시지를 출력합니다.
        """
        print(f"Hello, {name}!")
    

정리

  • 함수는 코드의 재사용성가독성을 높이는 중요한 도구입니다.
  • 매개변수와 반환값을 활용하여 데이터를 함수 간에 효율적으로 전달할 수 있습니다.
  • 재귀 함수와 람다 함수는 특정 상황에서 간결하고 유용하게 사용할 수 있습니다.

다음 글 예고:
함수의 확장을 돕는 “모듈과 패키지”를 학습하며, 파이썬의 강력한 기능을 활용하는 방법을 알아보겠습니다!

This post is licensed under CC BY 4.0 by the author.