파이썬 함수란? 반복 코드를 묶어 재사용하는 기본 개념
자료를 담는 데서, 동작을 묶는 데로
앞선 글에서는 리스트, 튜플, 딕셔너리, 세트 같은 자료 구조를 살펴봤어요. 어떤 자료를 어떻게 담을지 알게 됐다면, 이번에는 그 자료를 가지고 어떤 일을 할지 정리해 볼 차례입니다.
예를 들어 이름을 받아 인사말을 만들거나, 가격에 세금을 더하는 코드가 있다고 해볼게요. 한 번만 쓸 거라면 그냥 작성해도 괜찮지만, 같은 일을 여러 곳에서 해야 한다면 코드를 복사해 붙이는 순간부터 살짝 불안해집니다. 고칠 곳을 하나 놓치면 결과가 달라질 수 있거든요. 어? 분명 같은 계산인데 왜 여기만 다르지? 하는 일이 생깁니다.
파이썬의 함수(function)는 이런 작업을 이름 붙여 묶어 두고, 필요할 때 다시 실행하도록 도와줍니다. 레시피를 한 번 적어 두고 필요할 때 꺼내 쓰는 것과 비슷해요.
함수는 정의하고 호출해요
함수에는 크게 두 순간이 있습니다. 먼저 def로 함수의 내용을 정의하고, 그다음 함수 이름 뒤에 괄호를 붙여 호출합니다.
def say_hello():
print("안녕하세요!")
say_hello()
def say_hello():는 say_hello라는 함수를 만들겠다는 뜻입니다. 그 아래 들여쓴 줄은 함수가 호출될 때 실행할 내용이고요. 마지막 줄에서 say_hello()라고 적어야 실제로 실행됩니다.
여기서 초보 때 자주 헷갈리는 부분이 있어요. 함수를 정의하는 것만으로 안쪽 코드가 바로 실행되지는 않습니다. 메뉴판에 요리 이름을 적었다고 음식이 저절로 나오지는 않잖아요. 주문, 그러니까 호출이 있어야 시작됩니다.
함수 안쪽 코드는 꼭 들여 써야 합니다. 파이썬은 들여쓰기로 “이 줄은 함수에 속한다”는 경계를 알아봅니다. 들여쓰기가 빠지면 오류가 나거나, 의도와 다른 코드가 될 수 있어요. 저도 처음엔 괄호만 잘 닫으면 되는 줄 알고 들여쓰기를 놓쳐서 한참 헤맸습니다. 음... 파이썬은 공백에도 꽤 진심입니다.
반복되는 코드를 함수로 묶기
함수의 장점은 같은 코드를 여러 번 작성하지 않아도 된다는 점입니다. 아래처럼 주문 안내를 두 번 출력한다고 해볼게요.
print("주문이 접수됐어요.")
print("잠시만 기다려 주세요.")
print("주문이 접수됐어요.")
print("잠시만 기다려 주세요.")
두 줄을 함수로 묶으면 이렇게 바꿀 수 있습니다.
def show_order_message():
print("주문이 접수됐어요.")
print("잠시만 기다려 주세요.")
show_order_message()
show_order_message()
이제 안내 문구를 바꾸고 싶을 때 함수 안의 두 줄만 수정하면 됩니다. 호출하는 곳이 여러 군데여도 바뀐 내용이 적용돼요. 이름을 붙여 한 번 정의하고 필요할 때 호출한다는 것이 함수의 핵심입니다.
물론 코드가 한두 줄이고 딱 한 번만 쓰인다면 무조건 함수로 만들 필요는 없어요. 함수는 코드를 무작정 잘게 나누는 장치라기보다, 여러 번 쓰이거나 이름을 붙이면 읽기 쉬워지는 작업을 묶는 도구에 가깝습니다.
반환값은 결과를 돌려줘요
함수는 화면에 글자를 출력하는 것 말고도, 계산한 결과를 호출한 쪽으로 돌려줄 수 있습니다. 이때 return을 사용해요.
def add_numbers():
return 3 + 4
result = add_numbers()
print(result)
add_numbers()를 호출하면 함수 안의 3 + 4가 계산되고, return이 그 결과인 7을 돌려줍니다. 그래서 result에 값이 저장되고 화면에는 7이 출력돼요.
print()와 return은 역할이 다릅니다. print()는 결과를 화면에 보여 주고, return은 결과를 함수 바깥으로 돌려줘서 다른 계산이나 변수 저장에 쓸 수 있게 합니다. 결과를 보여 주기만 하면 print()가 편하고, 결과를 이어서 활용하려면 return이 필요하죠. 이 둘을 같은 뜻으로 쓰면 나중에 “왜 값이 저장되지 않지?” 하고 당황할 수 있어요.
함수에서 return을 만나면 그 함수의 실행은 끝납니다. 그리고 반환할 값을 따로 지정하지 않은 함수는 파이썬에서 None을 돌려줘요. 지금은 “결과를 돌려줄 땐 return” 정도만 기억하면 충분합니다.
다음은 함수에 값을 건네는 방법
이번 글에서는 함수의 뼈대를 먼저 익혔습니다. def로 정의하고, 이름을 불러 호출하고, 필요하면 return으로 결과를 돌려주는 흐름이에요. 함수는 반복 코드를 한곳에 모아 두고, 이름으로 뜻을 전달하는 데도 도움을 줍니다.
아직 예제의 계산값이나 문구는 함수 안에 직접 적어 두었죠. 그렇다면 이름이나 숫자를 바꿔서 같은 함수를 쓰려면 어떻게 할까요? 다음 글에서는 함수에 값을 건네는 매개변수와 인자를 알아보겠습니다. 여기까지 익혔다면 다음 단계로 넘어갈 준비는 다 됐어요!
(html comment removed: aistudio:footer )
![]() | ![]() |






