8. 함수
드디어 코딩의 꽃인 함수는 특정 작업을 수행하는 코드 블록으로, 코드의 재사용성과 가독성을 높이는 데 매우 유용합니다. 파이썬에서 함수는 def
키워드를 사용하여 정의하며, 필요에 따라 매개변수를 전달받고 결과를 반환할 수 있습니다. 이 장에서는 함수의 정의와 사용법을 배워보겠습니다.
8.1 함수 정의하기
함수를 정의하려면 def
키워드를 사용하고, 함수 이름과 괄호 ()
를 작성한 후 콜론 :
을 붙입니다. 함수 내부 코드는 들여쓰기를 사용하여 작성합니다.
# 간단한 함수 정의 예제
def greet():
print("안녕하세요!")
# 함수 호출
greet()
출력 결과:
안녕하세요!
8.2 매개변수가 있는 함수
“매개변수” 라는 단어를 처음 접하면 굉장히 생소합니다. 간단히 말해서, 함수의 입력값 혹은 인풋이라고 생각하면 이해하기가 편합니다. 함수에 매개변수를 정의하여 외부로부터 값을 전달받을 수 있습니다. 매개변수는 괄호 안에 정의하는데, 밑의 예시를 보면 더 직관적으로 이해할 수 있습니다.
def greet_user(name): # 여기서 name 이 매개변수 입니다.
print(f"안녕하세요, {name}님!")
# 함수 호출
greet_user("철수") # 매개변수에 "철수" 를 사용했습니다
출력 결과:
안녕하세요, 철수님!
8.3 반환값이 있는 함수
함수에 return
이라는 키워드를 사용한다면 그 함수는 반환값이 있다고 합니다. return
키워드는 이 함수를 호출한 곳으로 값을 “반환” 하고 싶을때 사용합니다. 이게 도대체 무슨 말인지 밑의 예시를 보고 알아봅시다.
def add_without_return(a, b):
result = a + b # a 변수와 b 변수에 있는 값을 result 라는 변수에 저장해줘
print(result) # result 변수에 있는 값을 출력해줘
total = add_without_return(3, 5) # return 값이 없기 때문에 total 이라는 변수에 아무 값도 저장이 안됨
print(total) # None 출력
# 두 수의 합을 반환하는 함수 예제
def add(a, b):
result = a + b # a 변수와 b 변수에 있는 값을 result 라는 변수에 저장해줘
print(result) # result 변수에 있는 값을 출력해줘
return result # result 변수에 있는 값을 반환해줘
total = add(3, 5) # return 값이 있던 덕분에 total 이라는 변수에 결과 값이 저장 됨
print(total) # 8 출력
8.4 기본값이 있는 매개변수
함수 매개변수에 기본값을 지정하면, 함수 호출 시 해당 매개변수를 생략할 수 있습니다. 기본값이 없는 매개변수는 반드시 값을 전달해야 합니다.
# 기본값이 있는 매개변수 예제
def greet_user(name, greeting="안녕하세요"):
print(f"{greeting}, {name}님!")
# 함수 호출
greet_user("영희") # greeting 이라는 매개 변수에 대한 값을 지정하는 것을 생략함
greet_user("민수", "환영합니다") # greeting 이라는 매개 변수에 "환영합니다" 라는 값을 사용함
출력 결과:
안녕하세요, 영희님!
환영합니다, 민수님!
자, 여기까지만 하고 다음 다음 챕터로 넘어가도 됩니다. 이 밑에서는 좀 더 파이썬 함수의 고급 개념을 다루는데, 실전에서 많이 쓰이지만 파이썬을 처음 배우는 사람이 반드시 처음부터 알아야 할 내용은 아닙니다. 어려우면 대충 스윽 보고 나중에 다시 돌아와도 문제 없습니다.
8.5 가변 매개변수
함수에 전달할 인자의 개수가 가변적인 경우, *args
또는 **kwargs
를 사용하여 여러 개의 인자를 처리할 수 있습니다.
*args
: 위치 인자를 튜플 형태로 전달받습니다.- **
**kwargs
**: 키워드 인자를 딕셔너리 형태로 전달받습니다.
# 가변 매개변수 예제
def print_numbers(*args):
for number in args:
print(number)
print_numbers(1, 2, 3, 4, 5)
출력 결과:
1
2
3
4
5
# 키워드 인자를 사용하는 가변 매개변수 예제
def print_user_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_user_info(name="철수", age=15, city="서울")
출력 결과:
name: 철수
age: 15
city: 서울
8.6 람다 함수
람다 함수는 이름이 없는 익명 함수로, 간단한 기능을 한 줄로 작성할 때 사용됩니다. lambda
키워드를 사용하여 정의합니다.
# 람다 함수 예제
add = lambda x, y: x + y
print(add(3, 5))
출력 결과:
8
같은 함수를 람다 함수가 아닌 방식으로 정의하면 이렇게 되겠죠?
def add(x, y):
return x + y
람다 함수는 주로 짧은 함수를 정의할 때 유용하며, 다른 함수의 인자로 전달할 때 자주 사용됩니다.
8.7 예제: 계산기 함수 만들기
여러 개의 계산 기능을 가진 간단한 계산기 함수를 만들어 보겠습니다.
# 계산기 함수 예제
def calculator(a, b, operation):
if operation == "add":
return a + b
elif operation == "subtract":
return a - b
elif operation == "multiply":
return a * b
elif operation == "divide":
if b != 0:
return a / b
else:
return "0으로 나눌 수 없습니다."
else:
return "잘못된 연산입니다."
# 함수 호출
print(calculator(10, 5, "add")) # 15
print(calculator(10, 5, "subtract")) # 5
print(calculator(10, 5, "multiply")) # 50
print(calculator(10, 0, "divide")) # 0으로 나눌 수 없습니다.
8.8 요약
- 함수는 특정 작업을 수행하는 코드 블록으로,
def
키워드를 사용하여 정의합니다. - 매개변수를 사용하여 함수 외부에서 값을 전달받을 수 있으며,
return
문을 사용하여 값을 반환할 수 있습니다. - 기본값이 있는 매개변수와 가변 매개변수를 사용하여 더 유연한 함수를 정의할 수 있습니다.
- 람다 함수는 간단한 기능을 가진 익명 함수로, 코드의 간결성을 높이는 데 유용합니다.
다음 챕터에서는 클래스에 대해서 알아보겠습니다.