파이썬에서 함수는 반복적으로 사용하는 코드를 묶어 재사용할 수 있게 해주는 도구입니다. 함수를 정의하면 필요한 인자(입력)를 받아 작업을 수행하고, 결과를 반환할 수 있습니다. 함수는 코드의 재사용성과 가독성을 높여주는 중요한 요소입니다.
1. 함수 정의 (Definition)
함수는 def 키워드를 사용하여 정의하며, 함수 이름과 매개변수(옵션)를 지정합니다. 함수 본문에는 수행할 코드가 포함됩니다. 기본 구조는 다음과 같습니다.
def 함수이름(매개변수1, 매개변수2, ...):
수행할 코드
return 반환값
- 함수 이름: 함수의 이름은 변수와 동일하게 영문자, 숫자, 밑줄(_)로 구성할 수 있으며, 숫자로 시작할 수 없습니다.
- 매개변수: 함수가 받는 입력값으로, 함수 내부에서 사용됩니다.
- return 문: 함수가 호출된 곳으로 값을 반환합니다. 반환값이 없으면 return 문을 생략할 수 있으며, 기본적으로 None을 반환합니다.
예제: 매개변수가 있는 함수 정의
def add(a, b):
result = a + b
return result
설명: add 함수는 두 매개변수 a와 b를 받아 더한 결과를 result에 저장하고, return 문을 통해 결과를 반환합니다.
2. 함수 호출 (Calling)
함수 호출은 정의된 함수 이름 뒤에 괄호를 열고, 필요한 매개변수를 전달하여 수행됩니다.
sum_result = add(3, 5)
print(sum_result) # 결과: 8
설명: add(3, 5)로 함수를 호출하며, 인자 3과 5가 각각 a와 b에 전달됩니다. 함수가 수행된 결과인 8이 sum_result에 저장됩니다.
3. 매개변수의 종류
파이썬 함수는 다양한 방식으로 매개변수를 정의하고 전달할 수 있습니다.
🔹 위치 인자 (Positional Arguments)
위치 인자는 매개변수의 순서대로 값을 전달하는 방식입니다.
def greet(name, age):
print(f"Hello, {name}. You are {age} years old.")
greet("Alice", 30)
설명: greet("Alice", 30)에서 "Alice"는 name에, 30은 age에 순서대로 전달됩니다.
🔹 기본값 인자 (Default Arguments)
함수 정의 시 매개변수에 기본값을 지정할 수 있으며, 함수 호출 시 해당 인자를 생략할 수 있습니다.
def greet(name, age=20):
print(f"Hello, {name}. You are {age} years old.")
greet("Bob") # 기본값 age=20이 사용됩니다.
greet("Charlie", 25)
설명: greet("Bob")에서 age는 생략되어 기본값 20이 사용됩니다. 기본값 인자는 위치 인자 다음에 위치해야 합니다.
🔹 키워드 인자 (Keyword Arguments)
키워드 인자는 함수 호출 시 매개변수=값 형식으로 전달하여 특정 매개변수에 값을 직접 지정하는 방식입니다.
def greet(name, age):
print(f"Hello, {name}. You are {age} years old.")
greet(age=30, name="Dave")
설명: 키워드 인자를 사용하여 name과 age에 값을 직접 지정할 수 있습니다. 호출 순서와 관계없이 매개변수 이름에 따라 값을 전달합니다.
🔹 가변 인자 (*args, **kwargs)
- args는 위치 인자를 여러 개 받을 때 사용합니다.
- *kwargs는 키워드 인자를 여러 개 받을 때 사용합니다.
def add_numbers(*args):
return sum(args)
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print(add_numbers(1, 2, 3, 4)) # 여러 개의 위치 인자 전달
print_info(name="Eve", age=27, city="Seoul") # 여러 개의 키워드 인자 전달
설명: add_numbers 함수는 여러 위치 인자를 받아 모두 더하고, print_info는 여러 키워드 인자를 받아 각 키와 값을 출력합니다.
4. 반환값 (Return Values)
함수는 return 문을 통해 결과를 반환할 수 있으며, 반환값이 없는 경우 None을 반환합니다. 또한, 여러 값을 튜플 형태로 반환할 수도 있습니다.
def add_and_subtract(a, b):
add_result = a + b
subtract_result = a - b
return add_result, subtract_result
result1, result2 = add_and_subtract(10, 5)
print(result1) # 결과: 15
print(result2) # 결과: 5
설명: add_and_subtract 함수는 두 값을 반환하며, 호출 시 두 개의 변수 result1과 result2에 각 값을 저장합니다.
5. 람다 함수 (Lambda Functions)
람다 함수는 짧은 함수를 간단하게 정의할 때 사용합니다. 주로 간단한 계산이나 정렬에 사용됩니다.
add = lambda x, y: x + y
print(add(3, 7)) # 결과: 10
설명: lambda를 사용하여 두 매개변수 x, y를 더하는 간단한 함수를 정의하고 호출합니다.
람다 함수는 일반 함수보다 간단하게 쓸 수 있지만, 복잡한 로직이 필요할 때는 일반 함수를 사용하는 것이 좋습니다.
이와 같이 파이썬에서는 다양한 방법으로 함수를 정의하고 호출할 수 있습니다. 함수는 코드의 재사용성을 높이고, 복잡한 로직을 간결하게 만들며, 가독성을 향상시켜 주는 중요한 요소입니다.