함수

복잡함을 단순하게

Jun 10, 2025

‘함수’라는 말을 들으면
수학 공식처럼 딱딱하고 어렵게 느껴질 때가 있다.

꼭 넘어야 할 큰 산처럼 느껴지기도 하고,
어디서부터 시작해야 할지 막막할 때도 있다.

하지만 개념을 하나씩 천천히 짚어보다 보면
함수는 오히려 코딩을 더 간결하고 편하게 만들어주는 도구라는 걸 알게 된다.
생각보다 훨씬 더 실용적이고, 꼭 필요한 친구처럼 느껴질지도 모른다.


1. 함수란 무엇인가?

• 정의: 특정 작업을 수행하는 독립적인 코드 블록
• 작성법: def 키워드로 정의, return으로 결과 반환 가능
• 사용 이유: 코드 재사용, 가독성 향상, 유지보수 용이

2. 함수의 종류

1) 내장 함수 (Built-in)

• 기본 제공되는 함수들 (print(), len(), sum() 등)
• 별도 선언 없이 즉시 사용 가능
공식문서 보러가기

2) 외장 함수 (External via import)

• math, random, datetime, os 등
• import 문으로 불러와 사용
예: math.sqrt(16) → 4.0

3) 라이브러리/패키지

• numpy, pandas, matplotlib 등은 별도 설치 필요
• pip install 후 import 하여 사용
• 대규모 데이터 분석, 웹 개발, 머신러닝 등 다양한 분야에서 활용


3. 사용자 정의 함수

• 사용자가 직접 이름을 붙여 원하는 작업을 수행하도록 정의
• 매개변수를 받을 수도 있고, return으로 값을 반환할 수도 있음

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

4. 매개변수의 종류

• 기본 매개변수: 인자 전달 시 기본값 설정 가능
• 키워드 인자: 인자 이름을 명시하여 전달
• 가변 인자: *args, **kwargs로 개수 제한 없이 인자 받기 가능


5. 리스트 vs 숫자 전달 방식 차이

• 리스트: 참조로 전달되어 함수 내 수정 시 원본도 변경
• 숫자: 값 복사되어 원본 변수는 유지


6. lambda 함수 (익명 함수)

def 없이 한 줄로 간단한 함수 작성
• 변수에 저장하거나 즉시 실행 가능
고차 함수(map, filter 등)와 함께 사용 시 유용

square = lambda x: x**2
print(square(3))  # 9

7. 고차 함수

1) map() 과 lambda

• 모든 요소에 동일한 함수 적용

list(map(lambda x: x+1, [1,2,3]))  # [2, 3, 4]

2) filter() 와 lambda

• 조건을 만족하는 요소만 추출

list(filter(lambda x: x%2==0, [1,2,3,4]))  # [2, 4]

3) zip()

• 여러 이터러블을 병렬로 묶어주는 함수

for name, score in zip(["A", "B"], [90, 80]):
    print(name, score)

오늘을 마치며

함수는 생각보다 무겁지도, 멀지도 않다.

익숙해지면 어느 순간부터는 오히려
코딩을 더 편하게 만들어주는 든든한 도우미가 되어줄 것이다.

처음엔 어렵게 느껴질 수 있지만,
한 줄 한 줄 따라가다 보면
“어? 나도 함수 쓸 수 있네?” 하는 순간이 반드시 온다✨

그때의 나를 위해, 오늘 천천히 읽어보는 이 시간이
가장 큰 발걸음이 될지도 모른다.