프로그래밍 언어/Python

Python 람다(lambda)가 유용한 이유

Rateye 2021. 11. 1. 10:24
728x90
반응형
질문 : Python 람다가 유용한 이유는 무엇입니까?

파이썬 람다를 알아 내려고합니다. 람다는 실생활에서 잊혀져 야하는 "흥미로운"언어 항목 중 하나입니까?

필자는 그것이 필요할 수있는 몇 가지 극단적 인 경우가 있다고 확신하지만, 모호함을 감안할 때 향후 릴리스에서 재정의 될 가능성 (다양한 정의에 기반한 내 가정) 및 감소 된 코딩 명확성-그럴 경우 피할 수 있습니까?

이것은 C 유형의 오버플로 (버퍼 오버플로)를 상기시킵니다. 상위 변수를 가리키고 다른 필드 값을 설정하기 위해 오버로딩합니다. 일종의 기술 쇼맨십처럼 느껴지지만 유지 보수 코더는 악몽입니다.

답변

람다 함수 에 대해 이야기하고 있습니까? 처럼

lambda x: x**2 + 2*x - 5

이러한 것들은 실제로 매우 유용합니다. 파이썬은 함수형 프로그래밍이라는 프로그래밍 스타일을 지원합니다. 여기서 함수를 다른 함수에 전달하여 작업을 수행 할 수 있습니다. 예:

mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])

mult3[3, 6, 9] 로 설정합니다. 원래 목록에서 3의 배수 인 요소는 다음보다 짧습니다 (그리고 더 명확 할 수 있습니다).

def filterfunc(x):
    return x % 3 == 0
    mult3 = filter(filterfunc, [1, 2, 3, 4, 5, 6, 7, 8, 9])

물론이 특별한 경우에는 목록 이해와 동일한 작업을 수행 할 수 있습니다.

mult3 = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9] if x % 3 == 0]

(또는 range(3,10,3) ),하지만 목록 이해력을 사용할 수없고 람다 함수가 무엇인가를 작성하는 가장 짧은 방법 일 수있는 더 복잡한 사용 사례가 많이 있습니다.

  • 다른 함수에서 함수 반환
    >>> def transform(n): ... return lambda x: x + n ... >>> f = transform(3) >>> f(4) 7
    이것은 종종 Python의 데코레이터와 같은 함수 래퍼를 만드는 데 사용됩니다.
  • 반복 가능한 시퀀스의 요소를 reduce()
    >>> reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9]) '1, 2, 3, 4, 5, 6, 7, 8, 9'
  • 대체 키로 정렬
    >>> sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)) [5, 4, 6, 3, 7, 2, 8, 1, 9]

 

정기적으로 람다 함수를 사용합니다. 익숙해지는 데 시간이 좀 걸렸지 만 결국 언어의 매우 가치있는 부분이라는 것을 알게되었습니다.

출처 : https://stackoverflow.com/questions/890128/why-are-python-lambdas-useful
728x90
반응형