- 리스트, 튜플, 딕셔너리, 세트 심화
함수 인자의 심화와 유연성
파이썬의 함수는 단순히 값을 받아 실행하는 도구를 넘어, 매우 유연하게 인자를 처리할 수 있는 강력한 기능을 지니고 있습니다. 함수 정의 시 각 매개변수에 기본값을 지정하면, 호출하는 쪽에서 값을 생략해도 자연스럽게 동작합니다. 이러한 기본값 매개변수는 함수의 범용성을 크게 높여줍니다.
키워드 인자 방식으로 함수를 호출하면, 인자의 순서와 상관없이 원하는 매개변수에 값을 직접 지정할 수 있습니다. 이는 긴 함수 인자 목록에서도 실수를 줄이고 의도를 명확하게 밝히는 데 유용합니다. 또한, *args와 **kwargs를 활용하면 임의의 개수의 인수와 키워드 인수를 모두 한데 받아들일 수 있습니다. 이를 조합하면, 확장 가능한 API와 유연한 함수 인터페이스를 구현할 수 있습니다.
함수형 프로그래밍의 핵심 도구
파이썬은 함수형 프로그래밍 특유의 표현력을 자연스럽게 녹여냅니다. 람다(lambda) 함수는 일회용의 간단한 함수 정의를 가능하게 하며, 주요 내장 함수들과 함께 쓸 때 특히 빛을 발합니다.
map 함수는 시퀀스의 각 요소에 특정 동작을 일괄 적용하여 새 시퀀스를 만듭니다. filter는 조건에 맞는 요소만 골라내고, reduce는 시퀀스의 모든 값을 누적하며 하나의 결과로 압축해나갑니다. 이런 함수들은 데이터 변환, 집계, 연산을 불필요한 반복문 없이도 간결하게 구현하게 돕습니다.
함수를 감싸는 기술: 데코레이터
중급 단계에서는 데코레이터(Decorator)를 자주 마주치게 됩니다. 데코레이터는 기존 함수에 새로운 기능을 겹겹이 입혀주는 기법으로, 함수 앞에 @표기와 함께 붙여 사용합니다. 이를 통해 코드 중복 없이 로깅, 권한 검사, 실행 시간 측정 등 다양한 크로스커팅 기능을 손쉽게 추가할 수 있습니다.
클로저와 스코프의 이해
함수 내부에는 또 다른 함수, 즉 내부함수(Inner Function)를 정의할 수 있습니다. 클로저(Closure)는 이 내부함수가 외부 함수의 변수와 지속적으로 연결되어 있는 상태를 뜻합니다. 외부 함수가 종료된 뒤에도 내부 함수는 그 변수에 지속적으로 접근할 수 있죠. 이를 잘 이해하면, 데이터와 행동을 유연하게 결합하거나, 프라이빗 값을 은닉하는 등의 패턴을 구현할 수 있습니다.
스코프에 대한 이해도 필수입니다. 파이썬은 함수 내부/외부/전체 프로그램의 네임스페이스를 명확히 구분합니다. nonlocal, global 같은 키워드를 활용하면, 특정 변수의 생명 범위를 명확히 관리할 수 있습니다.
중급 파이썬 함수 실전 활용
이처럼 파이썬의 중급 함수 개념들은 코드의 재사용성과 효율성을 극대화하며, 함수형적 패턴을 통해 보다 읽기 좋고 에러에 강한 코드를 만드는 데 기여합니다. 여러 함수적 도구들을 현실의 문제에 맞게 조합하고, 필요한 경우 자신만의 데코레이터나 클로저를 구현해보는 경험은 중급 개발자로 한 걸음 성장하는 가장 확실한 길입니다.