B01.파이썬 함수 고급 사용법

학습 목표

이번 강의에서는 파이썬 함수의 고급 사용법을 배우고, 함수를 보다 효율적으로 활용하는 다양한 방법을 익힐 것입니다. 기본적인 함수 정의와 호출을 넘어, 매개변수 기본값, 가변 인자, 키워드 인자, 그리고 Lambda 함수와 같은 고급 개념에 대해 배워보겠습니다.

개념 설명

함수의 매개변수는 다양한 방식으로 정의할 수 있습니다. 기본값을 설정할 수 있어 호출 시 값을 지정하지 않아도 가능합니다. 가변 인자(*args)와 키워드 인자(**kwargs)를 사용하면 함수에 전달할 인자의 개수를 유동적으로 조절할 수 있습니다. 또한, Lambda 함수는 짧은 함수 문법을 제공하여 간단한 함수를 간편하게 정의할 수 있게 해줍니다. 이러한 기능들을 활용하면 더욱 유연하고 재사용 가능한 코드를 작성할 수 있습니다.

예제 코드

# 기본값이 있는 함수
def greet(name, greeting="안녕하세요"):
    """주어진 이름으로 인사하는 함수"""
    return f"{greeting}, {name}!"

# 가변 인자를 사용하는 함수
def add_numbers(*args):
    """주어진 숫자들의 합을 반환하는 함수"""
    return sum(args)

# 키워드 인자를 사용하는 함수
def display_info(**kwargs):
    """이름, 나이, 직업 등의 정보를 출력하는 함수"""
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# Lambda 함수를 사용한 예
square = lambda x: x * x  # 입력값의 제곱을 반환하는 함수

# 함수 호출 예제
print(greet("홍길동"))  # 기본 인사 사용
print(greet("김철수", "안녕"))  # 사용자 정의 인사 사용

print("숫자의 합:", add_numbers(1, 2, 3, 4, 5))  # 가변 인자 사용

display_info(이름="이영희", 나이=30, 직업="개발자")  # 키워드 인자 사용

print("5의 제곱:", square(5))  # Lambda 함수 사용

코드 설명

이 코드에서는 다양한 방식으로 함수를 정의하고 호출하는 예제를 보여줍니다. 'greet' 함수는 기본값을 가지고 있어, 사용자 정의 인사를 지정하지 않으면 기본 인사로 호출됩니다. 'add_numbers' 함수는 가변 인자를 사용하여 여러 개의 숫자를 전달받아 이들의 합을 계산합니다. 'display_info' 함수는 키워드 인자를 통해 유동적인 정보를 출력할 수 있게 해줍니다. 마지막으로 Lambda 함수를 정의하여 간단한 수학 연산을 수행하는 예제를 포함합니다.

연습 문제

1. 기본값을 사용하여 두 수의 곱을 반환하는 함수를 작성하고, 두 번째 수에 기본값을 설정해 보세요.

2. 가변 인자를 사용하여 최소값과 최대값을 반환하는 함수를 작성해 보세요.

3. Lambda 함수를 활용하여 두 수의 최대 공약수를 구하는 함수를 작성해 보세요.

연습 문제 해답

# 1번 문제: 기본값을 가진 곱셈 함수
def multiply(a, b=1):
    """두 수의 곱을 반환하는 함수 (두 번째 수는 기본값 1)"""
    return a * b

print("3의 배수:", multiply(3))  # 기본값 사용
print("3과 4의 곱:", multiply(3, 4))  # 두 번째 인자 전달

# 2번 문제: 가변 인자를 사용하여 최소값과 최대값을 반환
def min_max(*args):
    """입력된 숫자들의 최소값과 최대값을 반환하는 함수"""
    return min(args), max(args)

minimum, maximum = min_max(5, 3, 9, 1, 6)
print("최소값:", minimum, "최대값:", maximum)

# 3번 문제: Lambda 함수를 사용하여 최대 공약수 구하기
from math import gcd  # math 모듈에서 gcd 함수를 가져옴

gcd_func = lambda x, y: gcd(x, y)

print("12와 15의 최대 공약수:", gcd_func(12, 15))  # 최대 공약수 출력

댓글 쓰기

0 댓글