함수 고급 기능
2025. 3. 26. 03:17ㆍProgramming Languages/Python
함수 고급 기능
함수 객체
파이썬에서 함수는 일급 객체(first-class object)로, 다른 변수와 마찬가지로 할당, 전달, 반환할 수 있습니다.
def 인사(이름):
return f"안녕하세요, {이름}님!"
# 함수를 변수에 할당
인사_함수 = 인사
# 할당된 변수를 통해 함수 호출
메시지 = 인사_함수("철수")
print(메시지) # 출력: 안녕하세요, 철수님!
함수를 인수로 전달
def 적용_함수(함수, 값):
"""주어진 함수를 값에 적용하는 함수"""
return 함수(값)
def 제곱(x):
return x ** 2
def 세제곱(x):
return x ** 3
# 함수를 인수로 전달
결과1 = 적용_함수(제곱, 5)
결과2 = 적용_함수(세제곱, 5)
print(결과1) # 출력: 25
print(결과2) # 출력: 125
함수 안에 함수 정의
def 외부_함수(x):
"""외부 함수"""
def 내부_함수(y):
"""내부 함수"""
return x + y
return 내부_함수 # 내부 함수 반환
# 외부 함수 호출하여 내부 함수 객체 받기
더하기_5 = 외부_함수(5)
# 내부 함수 호출
결과 = 더하기_5(3)
print(결과) # 출력: 8
클로저(Closure)
클로저는 함수 안에 함수를 정의하고, 그 내부 함수가 외부 함수의 지역 변수를 사용하는 경우를 말합니다.
def 카운터_생성():
"""카운터 함수를 생성하는 함수"""
카운트 = 0
def 카운트_증가():
nonlocal 카운트
카운트 += 1
return 카운트
return 카운트_증가
# 카운터 함수 생성
카운터 = 카운터_생성()
# 카운터 함수 호출
print(카운터()) # 출력: 1
print(카운터()) # 출력: 2
print(카운터()) # 출력: 3
데코레이터(Decorator)
데코레이터는 함수를 수정하지 않고 기능을 확장하는 방법입니다.
def 로그_데코레이터(함수):
"""함수 실행 전후에 로그를 출력하는 데코레이터"""
def 래퍼(*args, **kwargs):
print(f"함수 {함수.__name__} 실행 시작")
결과 = 함수(*args, **kwargs)
print(f"함수 {함수.__name__} 실행 완료")
return 결과
return 래퍼
# 데코레이터 적용
@로그_데코레이터
def 인사(이름):
print(f"안녕하세요, {이름}님!")
return f"{이름}님께 인사드렸습니다."
# 함수 호출
결과 = 인사("철수")
print(결과)
# 출력:
# 함수 인사 실행 시작
# 안녕하세요, 철수님!
# 함수 인사 실행 완료
# 철수님께 인사드렸습니다.
'Programming Languages > Python' 카테고리의 다른 글
| 함수 모듈화와 가져오기 (0) | 2025.03.26 |
|---|---|
| 함수형 프로그래밍 기초 (0) | 2025.03.26 |
| 함수 문서화(Documentation) (0) | 2025.03.26 |
| 내장 함수(Built-in Functions) (0) | 2025.03.26 |
| 재귀 함수(Recursive Functions) (0) | 2025.03.26 |