파이썬 함수 정의부터 고급 활용까지: 초보자를 위한 체계적인 학습 가이드

2025. 1. 31. 06:38·파이썬 (Python)

 

1. 함수의 기본 개념과 필요성

1.1 함수란 무엇인가?

함수는 특정 작업을 수행하는 코드 블록입니다. 마치 요리 레시피처럼 입력값을 받아 정해진 과정을 거쳐 결과를 반환합니다.

함수를 사용하는 주된 이유:

  • 반복되는 코드를 줄여 생산성 향상
  • 복잡한 문제를 작은 단위로 분해하여 가독성 개선
  • 기능 수정 시 유지보수 용이

1.2 함수의 기본 구조

def 함수명(매개변수):  
    """문서화 문자열 (Docstring)"""  
    실행 코드  
    return 반환값  

예시: 간단한 덧셈 함수

def add(a, b):  
    """두 수의 합을 계산하는 함수"""  
    return a + b  

print(add(3, 5))  # 8 출력  

2. 매개변수(Parameter)와 인자(Argument)의 차이

2.1 기본 개념

  • 매개변수: 함수 정의 시 선언하는 변수 (예: def func(x):에서 x)
  • 인자: 함수 호출 시 전달하는 실제 값 (예: func(5)에서 5)

2.2 다양한 인자 전달 방식

2.2.1 위치 인자 (Positional Arguments)

인자의 순서대로 매개변수에 대입

def introduce(name, age):  
    print(f"{name}, {age}세")  

introduce("김철수", 30)  # "김철수, 30세" 출력  

2.2.2 키워드 인자 (Keyword Arguments)

매개변수 이름을 직접 지정

introduce(age=25, name="이영희")  # "이영희, 25세" 출력  

2.2.3 기본값 매개변수 (Default Parameters)

인자를 전달하지 않을 때 사용할 기본값 설정

def order(item, quantity=1):  
    print(f"{item} {quantity}개 주문")  

order("커피")          # "커피 1개 주문"  
order("케이크", 2)    # "케이크 2개 주문"  

3. 변수의 유효 범위(Scope)

3.1 지역 변수 vs 전역 변수

  • 지역 변수: 함수 내부에서 선언, 외부에서 접근 불가
  • 전역 변수: 함수 외부에서 선언, 모든 곳에서 접근 가능
global_var = "전역"  

def test():  
    local_var = "지역"  
    print(global_var)  # "전역" 출력 (접근 가능)  
    print(local_var)   # "지역" 출력  

test()  
# print(local_var)  # 오류 발생 (접근 불가)  

3.2 global 키워드

전역 변수 수정 시 필수로 사용

count = 0  

def increment():  
    global count  
    count += 1  

increment()  
print(count)  # 1 출력  

4. 고급 함수 활용 기법

4.1 람다 함수 (Lambda Expressions)

간단한 한 줄 함수 정의

square = lambda x: x ** 2  
print(square(5))  # 25 출력  

# 리스트 정렬에 활용  
points = [(1, 3), (5, 1), (2, 4)]  
points.sort(key=lambda p: p[1])  # y좌표 기준 정렬  
print(points)  # [(5, 1), (1, 3), (2, 4)]  

4.2 가변 인자 처리

  • *args: 여러 개의 위치 인자를 튜플로 받음
  • **kwargs: 여러 개의 키워드 인자를 딕셔너리로 받음
def print_args(*args):  
    for arg in args:  
        print(arg)  

print_args(1, "A", True)  

def print_kwargs(**kwargs):  
    for key, value in kwargs.items():  
        print(f"{key}: {value}")  

print_kwargs(name="홍길동", age=30)  

5. 실전 프로젝트 예제

5.1 온도 변환기

def celsius_to_fahrenheit(c):  
    """섭씨를 화씨로 변환"""  
    return (c * 9/5) + 32  

def fahrenheit_to_celsius(f):  
    """화씨를 섭씨로 변환"""  
    return (f - 32) * 5/9  

print(f"25°C → {celsius_to_fahrenheit(25):.1f}°F")  # 77.0°F  
print(f"98.6°F → {fahrenheit_to_celsius(98.6):.1f}°C")  # 37.0°C  

5.2 간단한 로그인 시스템

def login(username, password):  
    """사용자 인증 함수"""  
    users = {  
        "admin": "admin123",  
        "user1": "pass1234"  
    }  
    if users.get(username) == password:  
        return f"{username}님 환영합니다!"  
    return "로그인 실패"  

print(login("admin", "admin123"))  # 성공  
print(login("user1", "wrongpass"))  # 실패  

6. 자주 발생하는 오류와 해결법

6.1 TypeError: missing required positional arguments

원인: 필수 매개변수에 인자 전달하지 않음
해결: 함수 정의 매개변수 개수 확인

6.2 UnboundLocalError

원인: 함수 내 지역 변수를 선언 전 사용
해결: 변수 초기화 또는 global 키워드 사용

6.3 RecursionError

원인: 종료 조건 없는 재귀 함수 호출
해결: 베이스 케이스 반드시 추가

7. 함수 작성 모범 사례

  1. 의미 있는 이름 사용: calculate_tax() (O) vs func1() (X)
  2. 한 함수에 한 기능: 복잡한 기능은 작은 함수로 분할
  3. 문서화 문자열 작성: Docstring으로 함수 설명 추가
  4. 예측 가능한 동작: 부작용(Side Effect) 최소화

 

'파이썬 (Python)' 카테고리의 다른 글

파이썬 함수 정의와 활용법: 코드 효율을 높이는 마법  (3) 2025.02.02
파이썬 반복문 쉽게 배우기! 초보자도 금방 이해하는 방법  (1) 2025.02.01
파이썬 반복문 기초부터 활용까지: 초보자를 위한 가이드  (1) 2025.01.31
파이썬 조건문 완벽 가이드: 초보자부터 실무 개발자까지  (0) 2025.01.31
변수와 데이터 타입 완전 정복! 파이썬 기초 개념 쉽게 배우기  (1) 2025.01.30
'파이썬 (Python)' 카테고리의 다른 글
  • 파이썬 함수 정의와 활용법: 코드 효율을 높이는 마법
  • 파이썬 반복문 쉽게 배우기! 초보자도 금방 이해하는 방법
  • 파이썬 반복문 기초부터 활용까지: 초보자를 위한 가이드
  • 파이썬 조건문 완벽 가이드: 초보자부터 실무 개발자까지
체리모찌
체리모찌
inknotes 님의 블로그 입니다.
  • 체리모찌
    모먼트로그
    체리모찌
    • 분류 전체보기 (32)
      • 일상 이야기 (6)
        • 영화 리뷰 (2)
        • 드라마 리뷰 (4)
      • 운영체제 (OS) (14)
        • 윈도우 (Windows) (1)
        • 리눅스 (Linux) (13)
      • 파이썬 (Python) (9)
      • 정보나눔 (3)
  • 최근 글

  • 최근 댓글

  • 인기 글

  • 태그

    python
    눅스서버
    스터디그룹리뷰
    스터디그룹
    중증외상센터리뷰
    파이썬 기초
    개발
    스터디그룹3화
    김호민
    프로그래밍
    웹서버
    nginx
    스터디그룹4화
    스터디드라마
    웹툰원작
    우분투
    서버최적화
    코딩
    서버관리
    웹사이트속도개선
    황민현
    파이썬
    청춘드라마
    nginx캐싱
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
체리모찌
파이썬 함수 정의부터 고급 활용까지: 초보자를 위한 체계적인 학습 가이드
상단으로

티스토리툴바