[python] 순수 함수와 불변 데이터의 개념에 대해 설명해주세요.

순수 함수와 불변 데이터는 함수형 프로그래밍에서 중요한 개념입니다. 이 개념들은 함수형 프로그래밍의 핵심 원칙 중 하나인 “부작용(side effect)을 최소화하는” 것을 지향합니다.

순수 함수(Pure Function)

순수 함수는 같은 입력에 대해 항상 동일한 출력을 반환하는 함수입니다. 이 함수는 주어진 인자를 변경하지 않으며, 외부 상태에 영향을 주지 않습니다. 다른 말로, 내부적인 상태나 외부의 상태에 의존하지 않고 독립적으로 동작합니다.

순수 함수의 특징:

순수 함수의 예시를 살펴보겠습니다.

def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 출력: 8

위의 예시에서 add 함수는 동일한 입력 35에 대해 항상 같은 결과 8을 반환합니다. 또한, 외부 상태에는 영향을 주지 않으므로 예측 가능하고 테스트하기 쉬운 함수입니다.

불변 데이터(Immutable Data)

불변 데이터는 생성 이후에 변경되지 않는 데이터입니다. 즉, 한 번 생성된 데이터는 그 값을 변경할 수 없습니다. 이와 반대로, 가변 데이터는 값을 변경할 수 있습니다.

불변 데이터의 특징:

파이썬에서는 불변 데이터로 정수(int), 부동 소수점(float), 문자열(str), 튜플(tuple) 등을 제공합니다. 이러한 불변 데이터를 사용하면 순수 함수를 구현하는 데 매우 유용합니다.

불변 데이터를 사용한 예시를 살펴보겠습니다.

name = "John"
greeting = "Hello, " + name
print(greeting)  # 출력: Hello, John

name = "Jane"  # name을 변경하더라도 greeting에는 영향을 주지 않습니다.
print(greeting)  # 출력: Hello, John

위의 예시에서 문자열 greeting은 초기에 생성된 "Hello, John" 값으로 고정되어 있습니다. name 값을 변경하더라도 greeting 값은 변하지 않습니다.

정리

순수 함수와 불변 데이터는 함수형 프로그래밍의 핵심 원칙을 구현하는 데 중요한 역할을 합니다. 순수 함수는 입력에 대해 항상 동일한 결과를 반환하며, 외부 상태에 영향을 주지 않습니다. 불변 데이터는 변경이 불가능하므로 예측 가능성과 코드의 안정성을 높이는데 도움을 줍니다. 이러한 개념을 활용하여 함수형 프로그래밍의 장점을 누릴 수 있습니다.