본문 바로가기
코딩교육/Python 초등교육에서 전문가까지

2단계 : 4. 함수 (함수의 가독성과 모듈화 - 왜 함수를 사용하는가 ?)

by 제리토리 2025. 3. 20.
728x90
반응형

 

프로그래밍에서 함수를 사용하는 이유는 코드의 가독성(Readability)과 모듈화(Modularity)를 높이고,

유지보수성과 재사용성을 강화하기 위해서입니다.

 

Python에서는 함수를 적절히 사용하면 복잡한 문제를 작은 단위로 나누어 해결할 수 있으며,

코드의 효율성과 유지보수성을 높일 수 있습니다.

 

이 장에서는 함수를 사용해야 하는 이유, 가독성과 모듈화의 개념, 좋은 함수 작성 원칙,

모듈화의 실제 적용 예제 등을 깊이 있게 설명합니다.

 

 

1. 함수의 역할과 필요성

 

 

프로그래밍에서 함수는 단순히 코드의 중복을 줄이는 것 이상의 역할을 합니다.

특히, 대규모 프로젝트에서는 함수를 활용한 모듈화가 필수적입니다.

 

㉮ 함수를 사용해야 하는 이유

 

코드의 재사용성(Reusability) 증가

코드의 가독성(Readability) 향상

유지보수성(Maintainability) 개선

코드의 모듈화(Modularity) 실현

디버깅(Debugging)과 테스트(Testability) 용이

 

이제 하나씩 자세히 살펴보겠습니다.

 

 

2. 함수의 가독성 (Readability)

 

가독성이 높은 코드는 개발자가 쉽게 이해하고 유지보수할 수 있는 코드를 의미합니다.

 

㉮ 함수 없이 작성된 코드 (가독성이 낮음)

# 학생 점수 평균을 계산하는 코드 (함수 없이 작성)
scores = [80, 90, 70, 85, 100]
total = 0

for score in scores:
    total += score

average = total / len(scores)
print(f"평균 점수: {average}")

 

문제점

코드가 길어지고, 동일한 연산을 다른 곳에서 수행할 때 반복적인 코드 작성이 필요.

기능이 명확하게 분리되지 않아 코드의 목적이 한눈에 파악되지 않음.

 

㉯ 함수를 사용한 코드 (가독성이 높음)

def calculate_average(scores):
    total = sum(scores)
    return total / len(scores)

scores = [80, 90, 70, 85, 100]
average = calculate_average(scores)
print(f"평균 점수: {average}")

 

개선된 점

calculate_average() 함수를 통해 코드의 목적이 명확해짐.

같은 로직이 필요할 때 다시 사용할 수 있어 유지보수성이 향상됨.

변수명과 함수명이 명확하여 코드의 의미를 쉽게 이해할 수 있음.

 

 

3. 함수의 모듈화 (Modularity)

 

모듈화(Modularity)는 코드를 기능별로 나누어 관리하는 개념입니다.

이것은 큰 프로그램을 여러 개의 작은 함수로 쪼개어 설계하는 방식으로, 유지보수성과 확장성을 극대화하는 중요한 원칙입니다.

 

㉮ 모듈화를 적용하지 않은 코드

# 학생들의 시험 점수 분석 코드 (모듈화 없음)
scores = [90, 85, 70, 88, 92]

# 평균 점수 계산
total = sum(scores)
average = total / len(scores)

# 최고 점수 찾기
highest = max(scores)

# 최저 점수 찾기
lowest = min(scores)

print(f"평균 점수: {average}")
print(f"최고 점수: {highest}")
print(f"최저 점수: {lowest}")

 

문제점

반복적으로 동일한 연산을 수행하는 코드가 많음.

가독성이 낮고, 유지보수가 어렵다.

새로운 기능을 추가할 경우 코드를 직접 수정해야 함.

 

㉯ 모듈화를 적용한 코드

# 점수 분석 모듈화
def calculate_average(scores):
    return sum(scores) / len(scores)

def find_highest(scores):
    return max(scores)

def find_lowest(scores):
    return min(scores)

# 학생 점수 데이터
scores = [90, 85, 70, 88, 92]

# 함수 호출
print(f"평균 점수: {calculate_average(scores)}")
print(f"최고 점수: {find_highest(scores)}")
print(f"최저 점수: {find_lowest(scores)}")

 

개선된 점

각각의 기능을 별도의 함수로 분리하여 모듈화.

각 함수의 역할이 명확하여 유지보수성이 향상됨.

다른 프로그램에서도 해당 함수들을 재사용 가능.

 

4. 좋은 함수 작성 원칙

 

효율적인 함수는 가독성과 모듈화를 고려하여 작성해야 합니다.

 

1. 하나의 함수는 하나의 역할만 수행해야 한다.

❌ 나쁜 예:

def process_data(data):
    clean_data = [d.strip() for d in data]
    sorted_data = sorted(clean_data)
    return sum(len(d) for d in sorted_data)

 

✅ 좋은 예:

def clean_data(data):
    return [d.strip() for d in data]

def sort_data(data):
    return sorted(data)

def count_total_length(data):
    return sum(len(d) for d in data)

 

 

2. 함수 이름은 명확하고 직관적이어야 한다.

❌ 나쁜 예:

def x(y):
    return y ** 2 + 10

 

✅ 좋은 예:

def calculate_score(value):
    return value ** 2 + 10

 

  • 함수 이름만 보고도 어떤 기능을 수행하는지 명확해야 한다.

 

 

3. 불필요한 전역 변수를 사용하지 말 것.

❌ 나쁜 예:

total = 0

def add_value(value):
    global total
    total += value

 

✅ 좋은 예:

def add_value(total, value):
    return total + value

 

  • 전역 변수 대신, 함수의 매개변수를 활용하면 코드의 예측 가능성이 증가.

 

 

5. 함수의 모듈화 적용 예제

 

Python에서는 여러 개의 함수를 파일(모듈)로 저장하고, 다른 파일에서 재사용할 수 있습니다.

 

㉮ math_utils.py (모듈 파일)

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

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

 

㉯ main.py (메인 코드 파일)

import math_utils  # 모듈 가져오기

print(math_utils.add(5, 3))
print(math_utils.subtract(10, 4))

 

모듈화의 장점

  • 기능을 별도의 파일로 저장하여 코드를 깔끔하게 유지 가능.

  • 여러 프로젝트에서 재사용 가능.

  • 테스트와 유지보수가 쉬워짐.

 

 

6. 요약

 

 

함수의 가독성

  • 함수를 활용하면 코드의 의미가 명확해지고, 유지보수가 쉬워짐.

  • 함수는 하나의 역할만 수행하도록 설계해야 함.

 

함수의 모듈화

  • 함수는 독립적인 기능을 수행하는 작은 단위로 분리하여 모듈화하는 것이 중요함.

  • 모듈화된 코드는 다른 프로젝트에서도 재사용 가능.

 

좋은 함수 작성 원칙

  1. 하나의 함수는 하나의 역할만 수행해야 함.

  2. 함수 이름은 명확하고 직관적으로 작성해야 함.

  3. 불필요한 전역 변수를 사용하지 말고, 매개변수를 활용해야 함.

728x90
반응형