Processing math: 100%

Development

Python 시작하기 #3 : 내장 함수와 익명 함수

jjangmo91 2025. 4. 24. 19:30

안녕하세요:) 이번 포스팅에서는 Python의 내장 함수BuiltinFunctions와 익명 함수lambda에 대해 알아보겠습니다. 이 글은 Python 공식 문서를 참고하여 작성하였습니다.

 

실습 링크

https://github.com/jjangmo91/ParkLab/blob/main/Python/04_Built_in_Fuctions_%26_lambda.ipynb

 

ParkLab/Python/04_Built_in_Fuctions_&_lambda.ipynb at main · jjangmo91/ParkLab

Contribute to jjangmo91/ParkLab development by creating an account on GitHub.

github.com


내장 함수BuiltinFunctions

지난 시간에 학습한 함수Function는 def 키워드를 사용해 사용자가 직접 정의하는 코드 블록이었습니다. 반면에 내장 함수는 Python 언어 자체가 기본으로 제공하는 함수로, Python 인터프리터가 시작될 때 이미 메모리에 로드되어 있어서, 별도의 정의def나 import 없이 곧바로 사용할 수 있는 함수들입니다.

 

Python 내장 함수의 전체 목록과 쓰임새는 아래 공식문서 링크에서 확인할 수 있습니다.

https://docs.python.org/3/library/functions.html

 

Built-in Functions

The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs, aiter, all, a...

docs.python.org


내장 함수 사용 예제

Python 내장 함수를 활용해 가상의 생태 관찰 데이터로부터 개체 밀도를 계산해 보겠습니다.

아래는 네 개의 관찰 구역에서 얻은 개체 수와, 대응하는 각 구역의 서식지 면적입니다.

# 예시 데이터
species_counts = [23, 45, 12, 38]   # 관찰 개체 수
habitat_areas  = [2.5, 3.1, 1.8, 4.0]  # 서식지 면적(km²)

 

두 리스트는 같은 인덱스의 값들이 한 쌍pair을 이루므로, 이를 처리하기 위해 zip, map, list 세 가지 내장 함수를 차례로 사용합니다. 먼저 본격적인 계산에 앞서 각 함수가 어떤 역할을 하는지 간단히 살펴보겠습니다.

  • zipiter1,iter2,... : 여러 시퀀스의 동일한 위치 요소를 튜플로 묶어 주는 함수입니다.
list(zip([1,2], [3,4]))  # [(1, 3), (2, 4)]
  • mapfunction,iterable : iterable의 각 요소에 function을 적용한 결과를 차례로 반환하는 iteration을 만듭니다.
list(map(lambda x: x*2, [1,2,3]))  # [2, 4, 6]
  • listiterable : iteratorzip,map,filter를 실제 리스트로 변환합니다.
it = map(lambda x: x+1, [1,2,3])
print(list(it))  # [2, 3, 4]
  • lambda : 한 줄에 짧은 함수를 정의할 때 사용하는 익명 함수anonymousfunction 생생 키워드입니다.
# lambda 매개변수: 표현식
add = lambda x, y: x + y
print(add(2, 3))  # 5

 

이제 위의 내장함수와 익명함수lambda를 결합해 개체밀도를 계산하는 코드를 짜보겠습니다.

# zip + map: 개체밀도 계산
densities = list(
    map(
        lambda x_y: x_y[0] / x_y[1], # (count, area) 튜플에서 count/area 연산
        zip(species_counts, habitat_areas) # [(23,2.5), (45,3.1), ...] 튜플 시퀀스 생성
    )
)
print("개체밀도:", densities)

 

다음은 filter 함수를 이용해, 앞서 계산한 densities 리스트에서 밀도가 10 이상인 값만 골라내는 예제입니다. lambda를 판별 함수로 사용하여 입력값 d가 10 이상이면 True, 그렇지 않으면 False를 반환합니다. filterfunction,iterable은 iterable 각 요소에 function을 적용해 True를 반환한 요소만 모아 iterator를 생성합니다.

# filter: 밀도가 10 이상인 값만 추출
high_density = list(filter(lambda d: d >= 10, densities))
print("밀도 ≥ 10:", high_density)

 

다음은 sorted 함수를 사용해, densities 리스트를 내림차순으로 정렬하고 결과를 출력하는 예제입니다. 

# sorted: 내림차순으로 정렬하기
sorted_densities = sorted(densities, reverse=True)
print("내림차순 개체밀도:", [f"{d:.2f}" for d in sorted_densities])

내장 함수의 구현 코드를 보려면 CPython 소스 저장소를 살펴보시면 됩니다.

https://github.com/python/cpython/blob/main/Python/bltinmodule.c

 

cpython/Python/bltinmodule.c at main · python/cpython

The Python programming language. Contribute to python/cpython development by creating an account on GitHub.

github.com