함수란 무엇이고 왜 사용할까?
프로그래밍에서 함수(Function)는 자주 사용하는 코드 블록을 하나로 묶어 이름을 붙여두고, 필요할 때마다 불러서 사용하는 구조입니다. 마치 전자레인지처럼, 특정 작업을 반복적으로 수행해야 할 때 버튼 하나로 실행할 수 있게 만들어주는 도구라고 생각하면 됩니다. 파이썬에서 함수는 코드의 재사용성을 높이고, 프로그램의 구조를 더 깔끔하게 만들어 줍니다. 함수를 사용하지 않으면 같은 작업을 여러 번 반복해서 작성해야 하지만, 함수를 사용하면 한 번만 정의해두고 여러 번 호출할 수 있습니다. 또한 함수는 큰 프로그램을 여러 개의 작은 작업으로 나누어 관리하기 쉽게 만들어주는 장점도 있습니다.
함수는 def 키워드를 사용하여 정의합니다. 예를 들어, 두 수의 합을 계산하는 함수는 다음과 같습니다.
def add(a, b):
return a + b
result = add(3, 5)
print("결과:", result)
add라는 이름의 함수는 두 개의 매개변수를 받아 합을 계산하여 반환합니다. return 문을 통해 함수 결과를 호출한 위치로 되돌려줍니다. 함수를 사용함으로써 중복을 줄이고, 유지보수를 편리하게 하며, 코드의 가독성을 높일 수 있습니다.
매개변수와 반환값 이해하기
함수를 더 잘 이해하기 위해서는 매개변수(Parameter)와 반환값(Return value)의 개념을 정확히 아는 것이 중요합니다. 매개변수는 함수에 전달되는 입력 값입니다. 함수 정의 시 괄호 안에 적으며, 함수 내부에서 이 값을 활용할 수 있습니다. 반환값은 함수가 실행된 후 결과로 돌려주는 값으로, return 키워드를 사용하여 지정합니다. 예를 들어보겠습니다.
def greet(name):
return f"안녕하세요, {name}님!"
message = greet("홍길동")
print(message)
이 함수는 이름을 전달받아 인사말을 반환합니다. greet("홍길동")처럼 함수를 호출할 때 전달하는 값을 인자(Argument)라고도 부릅니다. 함수는 매개변수를 여러 개 받을 수 있으며, 기본값을 설정할 수도 있습니다. 예를 들어 보겠습니다
def greet(name, message="환영합니다!"):
return f"{name}님, {message}"
print(greet("김철수")) # 기본 메시지 출력
print(greet("이영희", "좋은 하루!")) # 사용자 지정 메시지 출력
두 번째 매개변수에 기본값을 설정하면, 호출 시 값을 생략할 수 있어 더 유연한 함수 사용이 가능합니다. 함수는 반환값 없이 단순히 동작만 수행할 수도 있습니다.
def print_hello():
print("Hello!")
print_hello()
이 함수는 화면에 메시지를 출력하지만 값을 반환하지는 않습니다. 반환이 없으면 None이 기본 반환값입니다.
함수 실습을 통한 사용법 익히기
초보자가 파이썬 함수에 익숙해지기 위해서는 직접 함수들을 만들어보는 것이 가장 효과적입니다. 다음은 간단한 사용자 정의 함수 예제들입니다.
1. 짝수인지 홀수인지 판별하는 함수
def is_even(n):
if n % 2 == 0:
return "짝수"
else:
return "홀수"
print(is_even(4)) # 출력: 짝수
이 함수는, 입력받은 숫자가 2로 나누어 떨어지는지 확인하여 짝수인지 판단합니다.
2. 리스트에서 최대값 찾기
def find_max(numbers):
max_value = numbers[0]
for num in numbers:
if num > max_value:
max_value = num
return max_value
print(find_max([3, 9, 1, 7, 4])) # 출력: 9
이 함수는, 리스트 내 요소를 반복하며 가장 큰 값을 찾아 반환하는 함수입니다.
3. BMI 계산 함수
def calculate_bmi(weight, height):
bmi = weight / (height ** 2)
return round(bmi, 2)
print(calculate_bmi(70, 1.75)) # 출력: 22.86 (예시)
이 함수는, 몸무게와 키를 입력받아 BMI 지수를 계산하여 소수 둘째 자리까지 반올림한 값을 반환합니다.
함수를 작성할 때는 다음과 같은 팁을 기억하면 좋습니다.
• 함수 이름은 동작을 명확히 표현해야 합니다 (예: print_message, get_total 등)
• 너무 많은 역할을 하나의 함수에 넣지 말고, 작은 단위로 나누어 작성하세요
• 중복되는 코드를 함수로 묶어 효율을 높이세요
• 주석이나 함수 설명(docstring)을 활용하면 다른 사람도 쉽게 이해할 수 있습니다.
def square(n):
"""
이 함수는 숫자 n의 제곱을 반환합니다.
"""
return n * n
함수는 프로그래밍을 구조적으로 설계하는 데 핵심적인 도구이며, 초보자일수록 작은 함수부터 많이 만들어보는 것이 중요합니다. 점차 익숙해지면 모듈화, 재사용, 협업 등 더 나은 코드를 작성하는 데 큰 도움이 됩니다.