목록으로

프로그래밍 · Python

Python 입문 시리즈 #8: 함수로 코드를 재사용하는 방법

BeanCon
Python 입문자가 함수와 return을 학습하는 과정을 표현한 대표 이미지

Python 입문 시리즈 8편입니다. 함수의 개념과 필요성, def로 함수 만들기, 함수 이름 규칙, 매개변수, 여러 개의 매개변수, 반환값 return, print와 return의 차이, 지역 변수, 함수 호출 흐름, 계산기와 BMI 예제, 자주 하는 실수를 정리했습니다.

1. 함수 Function란 무엇인가?

지금까지 Python의 변수, 데이터 타입, 입력과 출력, 조건문, 반복문까지 배웠습니다. 이제부터는 프로그래머가 반드시 알아야 하는 핵심 개념인 함수 Function를 배워보겠습니다.

함수는 단순히 코드를 묶는 기능이 아닙니다. 프로그램을 더 깔끔하게 만들고, 같은 코드를 여러 번 재사용할 수 있게 해주며, 대규모 프로그램을 만드는 데 반드시 필요한 기술입니다.

함수의 의미

함수는 특정 작업을 수행하는 코드 묶음입니다.

예를 들어 아래와 같은 코드가 있다고 가정해보겠습니다.

print("안녕하세요")
print("반갑습니다")
print("좋은 하루 되세요")

이 코드를 여러 곳에서 사용해야 한다면 매번 복사해서 붙여넣어야 합니다. 그 대신 함수로 만들 수 있습니다.

def greeting():
    print("안녕하세요")
    print("반갑습니다")
    print("좋은 하루 되세요")

실행할 때는 다음과 같이 호출합니다.

greeting()

결과입니다.

안녕하세요
반갑습니다
좋은 하루 되세요

한 번 만들어두면 언제든지 재사용할 수 있습니다.

2. 함수가 필요한 이유

함수를 사용하는 이유는 크게 네 가지입니다.

이유설명
코드 재사용같은 코드를 여러 번 작성할 필요가 없습니다.
코드 가독성 향상기능을 함수 이름으로 표현하면 코드의 의미가 더 명확해집니다.
유지보수 편리기능 변경 시 함수 하나만 수정하면 됩니다.
프로그램 구조화대형 프로그램을 역할별 함수로 나누어 관리할 수 있습니다.

코드 재사용

def hello():
    print("Hello Python")

hello()
hello()
hello()

결과입니다.

Hello Python
Hello Python
Hello Python

코드 가독성 향상

함수 없이 작성한 코드입니다.

price = 10000
vat = price * 0.1
total = price + vat
print(total)

함수로 만들면 의미가 더 명확해집니다.

def calculate_price():
    price = 10000
    vat = price * 0.1
    total = price + vat
    print(total)

calculate_price()

프로그램 구조화

대형 프로그램의 함수 예시
  • 로그인 함수
  • 회원가입 함수
  • 상품조회 함수
  • 결제 함수
  • 배송조회 함수

3. 함수 만들기

Python에서 함수는 def 키워드를 사용합니다.

def 함수이름():
    실행할 코드

예제입니다.

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

함수 실행입니다.

hello()

결과입니다.

안녕하세요

4. 함수 이름 규칙

좋은 함수 이름은 기능을 쉽게 이해할 수 있어야 합니다. 함수 이름만 보고도 어떤 역할인지 알 수 있어야 합니다.

구분예시설명
좋은 예calculate_total()총액 계산 역할을 예측할 수 있습니다.
좋은 예print_report()보고서 출력 역할을 예측할 수 있습니다.
좋은 예send_email()이메일 발송 역할을 예측할 수 있습니다.
나쁜 예a()역할을 알기 어렵습니다.
나쁜 예test1()임시 이름처럼 보여 유지보수에 불리합니다.
나쁜 예abc()함수 목적이 드러나지 않습니다.

5. 매개변수 Parameter란?

함수에 데이터를 전달할 수 있습니다.

def hello(name):
    print(name + "님 안녕하세요")

실행합니다.

hello("철수")
hello("영희")

결과입니다.

철수님 안녕하세요
영희님 안녕하세요

여기서 name을 매개변수 Parameter라고 합니다.

여러 개의 매개변수 사용하기

def add(a, b):
    print(a + b)

실행합니다.

add(10, 20)

결과입니다.

30

또 다른 예제입니다.

def introduce(name, age):
    print("이름:", name)
    print("나이:", age)

실행합니다.

introduce("김철수", 25)

결과입니다.

이름: 김철수
나이: 25

6. 반환값 Return이란?

지금까지 함수는 결과를 출력만 했습니다. 하지만 함수는 결과를 반환할 수도 있습니다.

def 함수():
    return 값

예제입니다.

def add(a, b):
    return a + b

사용합니다.

result = add(10, 20)

print(result)

결과입니다.

30

7. print와 return의 차이

많은 초보자가 헷갈리는 부분입니다.

구분역할활용 가능성
print화면에 출력만 합니다.출력된 값을 다시 계산에 사용하기 어렵습니다.
return값을 함수 밖으로 돌려줍니다.반환된 값을 변수에 저장하고 조건문이나 계산에 활용할 수 있습니다.

print

def add(a, b):
    print(a + b)

return

def add(a, b):
    return a + b

return 값은 다음처럼 활용할 수 있습니다.

result = add(10, 20)

if result > 20:
    print("20보다 큽니다")
실무 기준

실무에서는 대부분 print보다 return을 사용해 결과를 다른 로직에 연결합니다.

8. 함수 안의 변수와 함수 밖의 변수

def test():
    x = 100
    print(x)

test()

결과입니다.

100

하지만 다음 코드를 함수 밖에서 실행하면 오류가 발생합니다.

print(x)

오류입니다.

NameError

함수 내부 변수는 함수 안에서만 사용할 수 있기 때문입니다. 이를 지역 변수 Local Variable이라고 합니다.

9. 함수 호출 흐름 이해하기

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

print("시작")

hello()

print("종료")

실행 순서입니다.

시작
안녕하세요
종료

프로그램은 위에서 아래로 실행되다가 함수 호출을 만나면 함수 내부로 이동합니다. 함수 실행이 끝나면 다시 원래 위치로 돌아옵니다.

10. 실전 예제

실전 예제 1: 계산기 만들기

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

print(add(10, 5))
print(subtract(10, 5))
print(multiply(10, 5))

결과입니다.

15
5
50

실전 예제 2: BMI 계산기

def calculate_bmi(weight, height):
    bmi = weight / (height ** 2)
    return bmi

result = calculate_bmi(70, 1.75)

print(result)

결과입니다.

22.857142857142858

11. 초보자가 자주 하는 실수

괄호를 빼먹음

함수를 실행하려면 hello가 아니라 hello()처럼 괄호를 붙여 호출해야 합니다.

return 이후 코드 작성

return을 만나면 함수는 즉시 종료되므로 그 아래 코드는 실행되지 않습니다.

매개변수 개수 불일치

함수에 정의된 매개변수 개수와 전달하는 값의 개수가 맞아야 합니다.

괄호를 빼먹음

잘못된 코드입니다.

hello

올바른 코드입니다.

hello()

return 이후 코드 작성

def test():
    return 100
    print("실행안됨")

return을 만나면 함수는 즉시 종료됩니다.

매개변수 개수 불일치

def add(a, b):
    return a + b

add(10)

결과입니다.

TypeError

전달 개수가 맞아야 합니다.

함수 사용 전후 비교

함수 없이 작성한 코드입니다.

a = 10
b = 20
print(a + b)

a = 30
b = 40
print(a + b)

a = 50
b = 60
print(a + b)

함수 사용 코드입니다.

def add(a, b):
    return a + b

print(add(10, 20))
print(add(30, 40))
print(add(50, 60))

훨씬 간결하고 유지보수가 쉬워집니다.

12. 정리와 다음 편 예고

오늘은 Python 함수 Function에 대해 배웠습니다.

핵심 정리
  • 함수는 특정 기능을 수행하는 코드 묶음입니다.
  • def 키워드로 함수를 생성합니다.
  • 함수는 여러 번 재사용할 수 있습니다.
  • 매개변수 Parameter로 데이터를 전달합니다.
  • return으로 결과를 반환합니다.
  • 함수 내부 변수는 지역 변수 Local Variable입니다.
  • 함수는 코드 재사용성과 유지보수성을 크게 향상시킵니다.

함수는 프로그래밍의 핵심입니다. 초보자는 단순히 문법을 외우기보다 직접 함수를 많이 만들어보는 것이 중요합니다.

간단한 계산기, BMI 계산기, 성적 계산기 등을 만들어 보면서 함수 사용에 익숙해지길 바랍니다.

Python 입문 연재 9 예고
  • 리스트 List 이해하기
  • 여러 개의 데이터를 한 번에 관리하는 방법
  • 리스트 생성, 조회, 추가, 삭제와 반복 처리

댓글

0

댓글을 불러오는 중입니다.