복잡함을 단순하게
‘함수’라는 말을 들으면
수학 공식처럼 딱딱하고 어렵게 느껴질 때가 있다.
꼭 넘어야 할 큰 산처럼 느껴지기도 하고,
어디서부터 시작해야 할지 막막할 때도 있다.
하지만 개념을 하나씩 천천히 짚어보다 보면
함수는 오히려 코딩을 더 간결하고 편하게 만들어주는 도구라는 걸 알게 된다.
생각보다 훨씬 더 실용적이고, 꼭 필요한 친구처럼 느껴질지도 모른다.
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)
오늘을 마치며
함수는 생각보다 무겁지도, 멀지도 않다.
익숙해지면 어느 순간부터는 오히려
코딩을 더 편하게 만들어주는 든든한 도우미가 되어줄 것이다.
처음엔 어렵게 느껴질 수 있지만,
한 줄 한 줄 따라가다 보면
“어? 나도 함수 쓸 수 있네?” 하는 순간이 반드시 온다✨
그때의 나를 위해, 오늘 천천히 읽어보는 이 시간이
가장 큰 발걸음이 될지도 모른다.