- [Python] 일급 함수: 런타임 초기화부터 partial 활용까지2025년 05월 08일 14시 26분 35초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
파이썬 일급 함수: 런타임 초기화부터 partial 활용까지
파이썬에서 함수는 단순한 코드 묶음 그 이상이다. 함수는 일급 객체(First-Class Object)로서, 다른 객체들과 동일하게 취급될 수 있는 특별한 존재이다. 이번 포스팅에서는 파이썬 함수의 주요 특징과 함께
map
,filter
,reduce
,callable
,partial
의 활용법을 살펴보고, 이를 통해 파이썬의 강력함을 느껴보자.1. 파이썬 함수의 특별한 특징
파이썬 함수가 일급 객체로서 가지는 네 가지 핵심 특징은 다음과 같다.
1.1. 런타임 초기화
파이썬 함수는 코드가 실행되는 런타임에 동적으로 초기화된다. 함수 정의 시점이 아닌, 실제 코드가 실행될 때 함수 객체가 메모리에 생성되는 것이다.
def greet(name): return f"안녕하세요, {name}님!" # greet 함수는 이 코드가 실행될 때 초기화된다. print(greet("지수")) # 출력: 안녕하세요, 지수님!
1.2. 변수에 할당 가능
함수는 마치 숫자나 문자열처럼 변수에 할당될 수 있다. 이를 통해 함수를 다른 이름으로 호출하거나, 데이터 구조에 저장하여 관리할 수 있다.
def multiply(a, b): return a * b operation = multiply result = operation(5, 2) print(result) # 출력: 10
1.3. 함수 인수로 전달 가능 (고위 함수)
파이썬에서는 함수를 다른 함수의 인수로 전달할 수 있다. 이러한 함수를 고위 함수(Higher-Order Function)라고 하며, 코드의 유연성과 추상화 수준을 높이는 데 기여한다.
def apply_operation(func, x): return func(x) def square(n): return n ** 2 result = apply_operation(square, 3) print(result) # 출력: 9
1.4. 함수 결과로 반환 가능 (고위 함수)
함수는 또 다른 함수를 자신의 결과로 반환할 수 있다. 이 역시 고위 함수의 중요한 특징이며, 함수의 동작 방식을 동적으로 생성하거나 변경하는 데 활용된다.
def create_power_function(exponent): def power(base): return base ** exponent return power pow_2 = create_power_function(2) result = pow_2(4) print(result) # 출력: 16
2. 강력한 내장 함수 활용
파이썬은 일급 함수의 특징을 활용하는 다양한 내장 함수를 제공한다. 그중
map
,filter
,reduce
,callable
의 사용법을 간단한 예제와 함께 살펴보자.2.1.
map(function, iterable, ...)
map
함수는 주어진iterable
의 각 요소에function
을 적용한 결과를 이터레이터로 반환한다.numbers = [1, 2, 3] squared = map(lambda x: x**2, numbers) print(list(squared)) # 출력: [1, 4, 9]
2.2.
filter(function, iterable)
filter
함수는iterable
의 각 요소를function
에 통과시켜True
를 반환하는 요소만 걸러낸다.numbers = [1, 2, 3, 4, 5, 6] even_numbers = filter(lambda x: x % 2 == 0, numbers) print(list(even_numbers)) # 출력: [2, 4, 6]
2.3.
reduce(function, iterable[, initializer])
reduce
함수는functools
모듈에 있으며,iterable
의 요소들을 왼쪽에서부터 누적적으로function
에 적용하여 단일 값을 반환한다.from functools import reduce numbers = [1, 2, 3, 4] product = reduce(lambda x, y: x * y, numbers) print(product) # 출력: 24
2.4.
callable(object)
callable
함수는 주어진object
가 호출 가능한지 (함수, 메서드 등) 여부를True
또는False
로 반환한다.def my_function(): pass print(callable(my_function)) # 출력: True print(callable(3)) # 출력: False
3.
functools.partial
활용functools.partial
은 기존 함수의 일부 인수를 미리 채워서 새로운 호출 가능한 객체를 만드는 데 사용된다. 함수의 재사용성을 높이고, 인자 수를 줄여 코드를 간결하게 만들 수 있다.from functools import partial def power(base, exponent): return base ** exponent square = partial(power, exponent=2) print(square(5)) # 출력: 25 (power(5, 2)와 동일) cube = partial(power, base=3) print(cube(2)) # 출력: 9 (power(3, 2)와 동일)
결론
파이썬의 일급 함수 특징과
map
,filter
,reduce
,callable
,partial
과 같은 강력한 도구들을 이해하고 활용하면 더욱 효율적이고 유연한 코드를 작성할 수 있다. 함수를 데이터처럼 다루고, 고위 함수를 적극적으로 활용하여 파이썬 프로그래밍의 깊이를 더해보자.728x90반응형'언어·프레임워크 > Python' 카테고리의 다른 글
[Python] time 모듈: time.time(), time.perf_counter(), time.process_time() 설명 (0) 2025.05.12 [Python] 정규 표현식 (Regular Expression) (0) 2025.04.25 [Python] 파이썬, 한글 파일명 자모 분리? 걱정 노노! (0) 2025.04.17 [Python] Python 패키지 관리의 혁신, uv 사용 가이드 (V3 이슈 포함) (0) 2025.04.14 [Python] py 파일을 exe 파일로 빌드, auto-py-to-exe가 답! (0) 2023.12.18 다음글이 없습니다.이전글이 없습니다.댓글