본문 바로가기
Language/Python

[고등학생부터, 파이썬] 14. 함수(Function)

by kellis 2026. 8. 20.
반응형
고등학생부터, 파이썬 · 14화

함수(Function) — 코드를 하나로 묶어서 재사용하기

동일한 코드가 반복해서 중복 사용되면 가독성면에서도 성능면에서도 좋지 않습니다. 반복되는 코드 덩어리를 이름 하나로 묶어두고 필요할 때마다 꺼내 쓰는 함수 개념을 배웁니다. 함수를 만드는 법, 값을 전달하는 매개변수, 그리고 결과를 돌려받는 반환값(return)까지 차근차근 정리해요.

이 시리즈를 시작하며

요즘은 고등학교에서도 코딩을 정규 과목으로 가르치는 시대입니다. 전공자가 아니어도 바이브 코딩(Vibe Coding)이나 생성형 AI(Generative AI)를 활용하면 누구나 그럴듯한 코드 결과물을 만들어낼 수 있게 되었죠. 

개발 언어를 접하는, 전공자가 아닌 일반인 입문자가 많아진 것입니다.

이 시리즈는 글쓴이가 실제로 일반인, 고등학생 등 비전공자·입문자에게 파이썬을 가르치면서 정리한 내용들을 교재 형식으로 엮은 글입니다.최대한 쉽고 친절하게 설명하면서도, 컴퓨터와 프로그래밍 언어에 대한 기초 이론까지 함께 짚고 넘어가려 합니다.

 

고등학생, 비전공자, 완전 입문자도 따라올 수 있게끔 만든 시리즈이고, 실제 과외 수업 자료를 바탕으로 만들어서 학교 시험처럼 개념 확인 문제도 그대로 들어있어요.

중간중간 빈칸 채우기학교 시험 유형 문제가 나오는데, 정답은 바로 안 보이게 접어뒀습니다. 먼저 스스로 생각해본 다음 "보기"를 눌러서 확인해보세요.

Chapter 31
함수(Function)란?

함수(Function)는 여러 줄의 코드를 하나의 이름으로 묶어 놓은 것입니다. 필요할 때마다 이름으로 호출하면, 묶어 놓은 코드가 그대로 실행됩니다.

함수는 단축키 같은 것

복사할 때 마우스로 우클릭하여 메뉴를 열어 "복사"를 누르는 대신 Ctrl+C 하나로 끝내죠. 함수도 똑같습니다. 여러 줄의 코드를 매번 다시 입력하는 대신, hello()처럼 이름 하나만 부르면 미리 만들어 둔 코드가 그대로 실행됩니다. 즉 함수는 코드의 단축키인 셈이에요.

함수가 왜 필요할까요
python
print("안녕하세요.")
print("반갑습니다.")

print("안녕하세요.")
print("반갑습니다.")

print("안녕하세요.")
print("반갑습니다.")

같은 코드가 계속 반복됩니다. 반복되는 코드는 수정하기도 어렵고 실수하기도 쉬워요. 그래서 함수를 사용합니다.

기본 문법
python
def 함수이름():
    실행할 코드
예제 · 함수 만들고 호출하기
python
def hello():
    print("안녕하세요.")

hello()
hello()
hello()
실행 결과
안녕하세요.
안녕하세요.
안녕하세요.
함수는 만들기만 하면 실행되지 않습니다

def hello():는 함수를 만들기만 한 것입니다. 아무 일도 일어나지 않아요. 실제로 실행하려면 이름 뒤에 ()를 붙여서 hello()처럼 호출해야 합니다.

함수도 바구니에 저장됩니다

1화에서 변수는 데이터를 담아두는 바구니라고 했었죠. 함수도 원리는 같습니다. 다만 바구니 안에 담기는 것이 데이터 하나가 아니라 코드 묶음이라는 점이 다를 뿐이에요.

def hello():라고 정의하면, 그 안의 코드를 하나로 묶어서 hello라는 이름표가 붙은 바구니에 담아둡니다. 나중에 hello()라고 부르면(호출하면), 바구니 안에 담아 둔 코드가 꺼내져서 실행되는 거예요.

정리하면, 변수 = 데이터를 담은 바구니, 함수 = 코드 묶음을 담은 바구니입니다.

빈칸 채우기
  1. 함수를 만드는 키워드를 쓰시오.
  2. 다음 코드에서 함수를 실행하는 코드를 작성하시오.
    python
    def hello():
        print("안녕하세요.")

정답
1. def
2. hello()
학교 시험 유형
  1. 함수(Function)를 사용하는 이유를 서술하시오.
  2. 다음 코드의 실행 결과를 작성하시오.
    python
    def test():
        print("Python")

    test()
정답
1. 반복되는 코드를 하나의 이름으로 묶어두면, 매번 코드를 다시 작성하지 않고 이름만 불러서 재사용할 수 있습니다. 수정할 때도 함수 안의 코드만 고치면 되어 유지보수가 쉬워집니다.

2. Python

 

Chapter 32
매개변수(Parameter)

지금까지 만든 함수는 항상 똑같은 일만 했습니다. hello()는 항상 "안녕하세요."만 출력해요. 그런데 사람마다 인사말에 이름을 다르게 넣고 싶다면 어떻게 할까요? 서로 다른 이름마다 새로운 함수를 만들어야 할까요? 그럴 필요는 없습니다. 함수에게 값을 전달하면 됩니다. 이때 함수가 전달받는 값을 매개변수(Parameter)라고 해요.

자판기 이야기

자판기는 하나입니다. 하지만 어떤 버튼을 누르느냐에 따라 콜라, 사이다, 물이 나와요. 함수도 같습니다. 함수는 하나인데, 전달하는 값에 따라 다른 결과를 만들 수 있습니다.

기본 문법
python
def 함수이름(매개변수):
    실행할 코드

# 호출: 함수이름(값)
예제 · 이름을 전달받기
python
def hello(name):
    print("안녕하세요.", name)

hello("철수")
hello("영희")
hello("민수")
실행 결과
안녕하세요. 철수
안녕하세요. 영희
안녕하세요. 민수
예제 · 매개변수 여러 개
python
def introduce(name, age):
    print("이름 :", name)
    print("나이 :", age)

introduce("홍길동", 17)
실행 결과
이름 : 홍길동
나이 : 17
순서가 중요합니다

매개변수는 순서대로 값을 전달받습니다. 순서를 바꾸면 엉뚱한 결과가 나와요.

python
introduce(17, "홍길동")
실행 결과
이름 : 17
나이 : 홍길동

첫 번째 자리는 name, 두 번째 자리는 age로 정해져 있기 때문에, 넣는 순서가 바뀌면 값도 뒤바뀌어 들어갑니다.

참고 · 리스트도 전달할 수 있습니다
python
def show_numbers(numbers):
    for num in numbers:
        print(num)

data = [10, 20, 30]
show_numbers(data)
실행 결과
10
20
30

9화에서 배운 리스트도 매개변수로 그대로 전달할 수 있어요. 함수 안에서 for로 순회하며 사용하면 됩니다.

빈칸 채우기
  1. 다음 함수가 "홍길동"을 출력하도록 호출하는 코드를 작성하시오.
    python
    def hello(name):
        print(name)

정답
hello("홍길동")
학교 시험 유형
  1. 매개변수(Parameter)란 무엇인지 서술하시오.
  2. 다음 함수 호출이 잘못된 이유를 서술하시오.
    python
    def info(name, age):
        print(name, age)

    info("홍길동")
정답
1. 함수를 호출할 때 함수 안으로 전달하는 값입니다. 함수가 상황에 따라 다르게 동작할 수 있도록 외부에서 값을 넘겨줍니다.

2. info 함수는 name과 age 두 개의 매개변수를 필요로 하는데, 호출할 때 값을 하나("홍길동")만 전달했기 때문에 오류가 발생합니다.

 

Chapter 33
반환값(Return)

지금까지 만든 함수는 print()처럼 화면에 출력만 했습니다. 그런데 함수가 계산기처럼 특정한 연산을 수행한다거나, 입력값에 따라 결과값이 달라지는 코드를 수행한다면, 계산한 결과를 돌려받아서, 다른 곳에 저장하고 다시 활용하고 싶다면 어떻게 할까요? 이때 사용하는 것이 return입니다.

계산기 이야기

10 + 20을 계산기에 입력하면, 계산기는 30이라는 결과를 우리에게 돌려줍니다. 함수도 마찬가지예요. 입력받은 값을 계산해서 결과를 돌려주는 것이 return입니다.

return이 없으면
python
def add():
    print(10 + 20)

add()
실행 결과
30

화면에 30이 보이긴 하지만, 이 값을 다른 변수에 저장하거나 활용할 수는 없습니다. 출력하고 끝이에요.

return을 사용하면
python
def add(a, b):
    return a + b

result = add(10, 20)
print(result)
실행 결과
30

이번엔 result라는 변수(바구니)에 계산 결과가 저장됩니다. 저장했으니 나중에 또 꺼내서 쓸 수 있어요.

print와 return은 다릅니다

print()는 화면에 보여주기만 하고 끝입니다. return은 값을 함수 밖으로 돌려줘서, 변수에 저장하거나 다른 계산에 이어서 쓸 수 있게 합니다.

python
def hello():
    print("안녕하세요.")

result = hello()
print(result)
실행 결과
안녕하세요.
None

hello()는 출력만 하고 값을 돌려주지 않았기 때문에, result에는 "돌려줄 값이 없다"는 뜻의 None이 저장됩니다.

return의 진짜 힘 · 세 반의 평균 구하기

세 과목 점수의 평균을 구하는 함수가 있다고 해봅시다.

python
def average(kor, eng, math):
    return (kor + eng + math) / 3

class1 = average(90, 80, 70)
class2 = average(100, 90, 80)
class3 = average(60, 70, 80)

print(class1)
print(class2)
print(class3)
실행 결과
80.0
90.0
70.0

여기까지는 print로 출력만 했을 때와 비슷해 보입니다. 그런데 return으로 각 반의 평균을 class1, class2, class3저장해뒀기 때문에, 이 값들로 추가 계산을 할 수 있어요.

python
total = class1 + class2 + class3
print(total / 3)
실행 결과
80.0
print는 끝, return은 이어짐

print()는 화면에 보여주고 거기서 끝나지만, return은 값을 변수에 저장해서 계산을 계속 이어갈 수 있게 해줍니다. 만약 average() 함수가 print만 했다면, 세 반의 평균을 저장할 방법이 없어서 전체 평균은 구할 수 없었을 거예요.

코드 읽기
  1. 다음 코드의 실행 결과를 작성하시오.
    python
    def square(num):
        return num * num

    print(square(6))
정답
36
학교 시험 유형
  1. print()return의 차이점을 서술하시오.
  2. 다음 코드의 실행 결과를 작성하시오.
    python
    def add(a, b):
        return a + b

    print(add(7, 8))
정답
1. print()는 값을 화면에 출력만 하고 끝나지만, return은 함수의 결과를 함수 밖으로 돌려줘서 변수에 저장하거나 다른 계산에 이어서 사용할 수 있게 합니다.

2. 15
다음 화 예고 — 15화에서는 함수 안에서 만든 변수와 함수 밖 변수가 서로 어떻게 다른지, 지역변수와 전역변수를 다뤄볼게요.
반응형

댓글