Python/Python

Python의 함수(Function)를 소개합니다

임베디드 친구 2025. 6. 29. 17:02
728x90
반응형

Python의 함수(Function)를 소개합니다

Python은 매우 직관적이고 강력한 프로그래밍 언어로, 효율적인 코드 작성을 위한 다양한 기능을 제공합니다. 그중에서도 함수는 코드의 재사용성을 높이고 복잡한 문제를 해결하기 쉽게 만들어 주는 중요한 요소입니다. 이번 포스팅에서는 Python에서 함수를 정의하고 사용하는 방법에 대해 소개하고자 합니다. 함수 정의와 호출, 인자 전달, 반환값, 그리고 람다 함수에 이르기까지 다양한 내용을 다뤄 보겠습니다.

함수의 정의와 호출

함수 정의하기

Python에서 함수를 정의하는 방법은 매우 간단합니다. def 키워드를 사용하여 함수를 정의하고, 함수의 이름과 매개변수를 지정해 주면 됩니다. 다음은 기본적인 함수 정의의 예입니다.

# 함수 정의 예시
def greet():
    print("Hello, World!")

위 코드에서 greet() 함수는 호출될 때 "Hello, World!"라는 메시지를 출력합니다. 함수의 정의는 항상 def 키워드로 시작하며, 함수 이름 뒤에 괄호(())가 붙습니다. 함수의 본문은 들여쓰기를 사용하여 나타내며, 들여쓰기 된 부분이 함수의 내용이 됩니다.

함수 호출하기

정의된 함수는 함수 이름을 사용하여 호출할 수 있습니다. 아래는 greet() 함수를 호출하는 방법입니다.

greet()  # 출력: Hello, World!

함수를 호출하면 해당 함수의 코드가 실행됩니다.

함수의 인자 전달

함수에 인자를 전달하면, 더욱 유연하게 사용할 수 있습니다. 함수 정의 시 괄호 안에 매개변수를 지정하고, 함수를 호출할 때 원하는 값을 전달할 수 있습니다.

위치 인자(Positional Arguments)

가장 일반적인 인자 전달 방식은 위치 인자를 사용하는 것입니다. 다음은 두 개의 숫자를 더하는 함수의 예입니다.

def add(a, b):
    return a + b

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

add() 함수는 두 개의 위치 인자를 받아 그 합을 반환합니다. 함수 호출 시 ab의 값으로 35를 전달했습니다.

키워드 인자(Keyword Arguments)

함수를 호출할 때, 매개변수의 이름을 지정해서 값을 전달할 수도 있습니다. 이를 키워드 인자라고 합니다.

def introduce(name, age):
    print(f"My name is {name} and I am {age} years old.")

introduce(name="Alice", age=30)  # 출력: My name is Alice and I am 30 years old.

키워드 인자는 함수 호출 시 어떤 값이 어떤 매개변수에 해당하는지 명확하게 할 수 있어 코드의 가독성을 높여줍니다.

기본값 인자(Default Arguments)

함수의 매개변수에 기본값을 설정할 수 있습니다. 기본값이 설정된 인자는 호출 시 값을 생략할 수 있습니다.

def greet_user(name="Guest"):
    print(f"Hello, {name}!")

greet_user()         # 출력: Hello, Guest!
greet_user("John")   # 출력: Hello, John!

greet_user() 함수는 name 매개변수에 기본값으로 "Guest"를 설정했습니다. 따라서 호출 시 인자를 전달하지 않으면 기본값이 사용됩니다.

가변 인자(args와 *kwargs)

매개변수의 개수를 모를 때는 가변 인자를 사용할 수 있습니다. *args는 위치 인자를, **kwargs는 키워드 인자를 가변적으로 받을 수 있습니다.

def print_args(*args):
    for arg in args:
        print(arg)

print_args(1, 2, 3)  # 출력: 1, 2, 3

def print_kwargs(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_kwargs(name="Alice", age=30)  # 출력: name: Alice, age: 30

*args**kwargs는 함수에 전달되는 인자의 개수를 유동적으로 처리할 수 있게 해줍니다.

반환값(Return Value)

함수는 값을 반환할 수 있습니다. return 키워드를 사용하여 함수의 실행 결과를 호출한 곳으로 돌려줄 수 있습니다.

def multiply(a, b):
    return a * b

result = multiply(4, 5)
print(result)  # 출력: 20

multiply() 함수는 두 숫자의 곱을 계산하고 그 결과를 반환합니다. return 키워드를 만나면 함수는 즉시 종료되고, 지정된 값을 반환합니다.

반환값이 없는 함수는 암묵적으로 None을 반환합니다. 예를 들어, print() 함수는 반환값이 없기 때문에 None을 반환합니다.

람다 함수(Lambda Function)

람다 함수는 짧고 간단한 익명 함수를 만들 때 사용합니다. lambda 키워드를 사용하여 정의하며, 일반적으로 한 줄로 작성됩니다.

람다 함수 정의하기

람다 함수는 간단한 연산이나 함수 내부에서 사용할 함수를 정의할 때 유용합니다.

# 두 숫자의 합을 계산하는 람다 함수
add = lambda x, y: x + y
print(add(3, 7))  # 출력: 10

위 예시에서 addxy를 더한 결과를 반환하는 람다 함수입니다. 람다 함수는 이름 없이도 사용할 수 있기 때문에, 일회성으로 사용할 때 적합합니다.

람다 함수 활용 예시

람다 함수는 주로 다른 함수의 인자로 전달할 때 유용하게 사용됩니다. 예를 들어, map(), filter(), sorted()와 같은 함수에서 람다를 많이 사용합니다.

# 리스트의 각 요소를 제곱하는 예시
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]

# 리스트에서 짝수만 필터링하는 예시
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 출력: [2, 4]

위 코드에서 map() 함수와 filter() 함수에 람다 함수를 인자로 전달하여 리스트 요소를 변환하거나 필터링할 수 있었습니다.

마무리

이번 포스팅에서는 Python 함수의 기본적인 사용법부터 고급 기능인 람다 함수까지 살펴보았습니다. 함수를 잘 활용하면 코드의 재사용성을 높이고, 가독성을 크게 개선할 수 있습니다. Python에서 함수는 필수적인 개념이므로 충분히 익혀 두는 것이 좋습니다.

728x90
반응형