실용적인 예제가 있는 Python 람다 함수

게시 됨: 2021-06-21

파이썬 람다 함수는 작고 이름 없이 정의된 함수입니다. 파이썬에서 키워드 'def'는 함수를 정의하는 데 사용됩니다. 그러나 익명 함수의 경우 'lambda' 키워드를 사용하여 해당 함수를 정의합니다. 따라서 이름 "람다 함수. 기능에 이름이 있거나 할당되지 않았을 수 있습니다.

파이썬의 일반 함수에 비해 람다 함수는 짧습니다.

Python, Java, C++, C# 등과 같은 프로그래밍 언어의 구문에 람다 함수가 추가되었습니다. ML 또는 LISP 언어의 핵심 개념으로 사용됩니다.

이 기사는 파이썬 람다 함수 의 개념과 그 사용법에 초점을 맞출 것입니다 .

프로그래밍 언어의 유형에 따라 람다 함수는 다음 용어와 상호 교환적으로 사용될 수 있습니다.

  • 익명 기능
  • 람다 함수
  • 람다 표현식
  • 람다 추상화
  • 람다 형태
  • 함수 리터럴

목차

람다 미적분학

람다 계산은 람다 표현식을 기반으로 하는 계산 모델입니다. 람다 미적분학은 순수한 추상화를 기반으로 하며 Alonzo Church에 의해 공식화되었습니다. 람다 추상화라고도 하며 Alonzo Church에서 만든 원래 모델을 나타냅니다.

이 개념으로 모든 계산을 인코딩할 수 있습니다.

람다 함수의 구문:

다음 구문은 파이썬에서 람다 함수를 사용할 때 사용됩니다.

람다 인수: 표현식

python 의 람다 함수에는 여러 인수가 있을 수 있습니다 . 그러나 함수는 하나의 표현식만 가질 수 있습니다. 이 식은 먼저 평가된 다음 반환됩니다. 람다 함수의 사용은 함수 개체의 요구 사항이 있는 모든 곳에 있습니다.

두 개의 인수가 있는 익명 함수가 람다로 정의되었지만 변수에 바인딩되지 않은 경우를 고려합니다.

람다 x, y: x + y

여기에서 두 인수는 함수에 의해 취해지며 합계가 반환됩니다.

람다 함수는 다음과 같은 몇 가지 특성을 보여줍니다.

  • 람다 함수의 본문에는 명령문이 있을 수 없으며 표현식만 포함할 수 있습니다.
  • 실행 코드는 한 줄에 불과합니다.
  • 유형 주석은 python의 람다 함수에서 지원되지 않습니다 .
  • 즉시 호출이 허용됩니다.

문은 사용할 수 없습니다

언급했듯이 람다 함수를 정의하는 동안에는 문이 있을 수 없습니다. 사용자가 pass, return, raise 또는 assert와 같은 문을 사용하는 경우 SyntaxError 예외가 발생합니다. 예외의 결과는 아래 코드를 통해 표시할 수 있습니다.

원천

위의 코드 에서 함수 람다의 본문에 assert을 포함하는 코드를 구문 분석할 때 구문 오류가 발생했습니다 .

람다 함수에는 단일 표현식만 포함됩니다.

파이썬의 모든 표준 일반 함수와 달리 파이썬 의 람다 함수 는 단일 표현식만 포함할 수 있습니다. 함수 람다의 본문은 괄호가 있는 여러 줄을 사용하여 표현식을 전체적으로 퍼뜨릴 수 있습니다. 그러나 여전히 하나의 표현으로 남아 있습니다.

원천

"홀수" 인수가 있으면 문자열 "홀수"가 반환되고 "짝수" 인수가 있으면 문자열 "짝수"가 반환됩니다. 위의 코드에서는 괄호 안에 있으므로 두 줄을 사용합니다. 그러나 그것은 하나의 표현으로 남아 있습니다.

유형 주석

파이썬에서 "유형 힌트"를 사용할 수 있게 되면서 이제 일반 함수가 파이썬의 람다 함수보다 선호되고 있습니다. mypy, pyre 등과 같은 도구를 사용할 수 있으므로 full_name()으로 유형 오류를 잡을 수 있습니다. 람다 함수와 관련된 구문 오류는 런타임 중에 발생합니다.

즉시 호출된 함수 실행(IIFE)

이 기능은 파이썬 인터프리터 외부에서 사용할 수 없습니다. 파이썬에서 람다 식의 정의는 map() 등과 같은 고차 함수에 전달할 수 있습니다.

람다 함수의 인수

다음과 같은 인수를 전달하기 위해 Python 람다 식에서 다양한 방법이 지원됩니다 .

  • 위치 인수
  • 키워드 인수라고도 하는 명명된 인수
  • varargs라고도 하는 변수의 인수 목록입니다.
  • 키워드 인수의 변수 목록
  • 키워드만 있는 인수.

Python Lambda 표현식의 데코레이터

데코레이터는 클래스나 함수에 동작을 추가할 수 있는 패턴 구현으로 정의할 수 있습니다. @decorator 구문은 파이썬에서 데코레이터를 표현하기 위한 함수의 접두사로 사용됩니다.

'Python' 인수가 있는 경우에만 Decorative_function() 이 인쇄됩니다. 인쇄되는 추가 동작은 ''decorated_function' 함수 호출'입니다.

@decorator 구문을 사용할 필요는 없지만 Python에서는 람다 함수에 데코레이터를 추가할 수 있습니다 . 데코레이터는 람다 함수를 호출하는 함수 역할을 합니다.

<lambda>는 람다 함수가 식별되는 위치에 나타납니다. 반면, 일반 함수인 add_two의 경우 명확하게 식별됩니다.

디버깅을 위해 람다 함수를 이런 식으로 데코레이션할 수 있습니다.

폐쇄

python에서 Closure()는 함수에서 사용되는 매개변수를 제외한 자유 변수를 함수 범위 내에서 정의된 특정 값에 바인딩하는 함수로 정의됩니다. 어디에서나 클로저를 호출할 수 있습니다. 파이썬의 람다 함수는 일반 함수가 클로저로 작동하는 방식으로 클로저로 작동할 수 있습니다.

람다 함수 사용

  • 더 짧은 시간 동안 함수를 사용해야 할 때마다 그 경우에 람다 함수가 사용됩니다.
  • 고차 함수의 함수에 함수를 전달하기 위해 람다 함수가 적용됩니다. 함수는 고차 함수에 대한 인수로 전달됩니다.
  • 파이썬의 람다 함수는 map() 등과 같은 다른 내장 함수와 함께 사용할 수 있습니다.

람다 함수 테스트

doctest 및 unittest 모듈을 사용하여 Python의 람다 함수를 테스트할 수 있습니다.

  • Unittest 모듈은 일반 함수처럼 람다 함수를 테스트합니다.
  • doctest 모듈 의 경우 테스트 실행을 위해 docstring 에서 파이썬 코드를 추출 합니다. 람다 함수의 구문은 docstring 을 허용하지 않습니다 . 그러나 이름을 지정하는 람다의 _doc_ 요소에 문자열을 할당할 수 있습니다.

Python Lambda 함수의 예

아래 코드에서 "identity"라는 이름의 함수는 인수가 반환되는 위치에 정의되어 있습니다. "def" 키워드를 사용하여 파이썬의 표준 함수로 정의합니다.

>>> def 동일성(x);

... .. 리턴 x

여기서 x는 "identity" 함수에 의해 인수로 취해지며 호출되면 인수를 반환합니다.

람다를 사용하여 동일한 코드를 작성하면 다음과 같습니다.

람다 x: x

표현식은 키워드로서의 Lambda, 바인딩된 변수인 x, 코드의 본문인 X의 세 부분으로 구성됩니다.

  • 바운드 변수는 람다 함수에 전달되는 인수를 나타냅니다. 그러나 자유 변수는 바인딩되지 않고 표현식 본문에서 참조할 수 있는 변수입니다. 상수는 함수의 범위에 정의된 자유 변수 또는 변수일 수 있습니다.

위의 표현은 다음과 같이 정리할 수 있습니다.

>>> 람다 x: x + 1

여기에서 함수는 인수에 1을 더합니다. 괄호를 사용하여 인수와 함께 두 함수를 모두 둘러싸면서 인수에 함수를 추가할 수 있습니다.

>>>(람다 x: x + 1)(2)

표현식의 값을 계산하기 위해 축소 전략이 적용됩니다. 위의 예에서와 같이 바인딩된 변수 "x"는 인수 2로 대체될 수 있습니다.

(람다 x: x + 1 )(2) = 람다 2: 2 + 1

= 2 + 1

= 3

람다 함수는 표현식이므로 이름을 지정할 수 있으며 위의 코드는 다음과 같이 다시 작성할 수 있습니다.

>>> add_one = 람다 x : x + 1

>>> add_one(2)

이것은 다음과 같이 작성하는 것과 같습니다.

def add_one(x):

x + 1 반환

람다 함수는 단일 인수를 사용합니다. 또한 파이썬에서 람다 함수 를 정의하는 동안 함수 주위에 괄호가 없습니다.

파이썬 람다 함수 에 둘 이상의 인수를 전달하는 경우 인수가 나열되고 쉼표(,)를 사용하여 구분됩니다. 인수를 나열하는 동안 괄호가 없어야 합니다. 다중 인수 함수의 예는 다음과 같습니다.

여기서 full_name 아래의 람다 함수는 두 개의 인수를 사용합니다. 첫 번째 매개변수 마지막 매개변수 를 보간하는 함수에서 문자열을 반환합니다 . 코드는 람다 함수를 정의하는 동안 괄호를 사용하지 않았음을 보여줍니다. 람다 함수의 호출은 파이썬의 표준 함수와 같은 방식으로, 즉 인수를 둘러싸는 괄호를 사용합니다.

filter()가 있는 Python 람다 함수

파이썬에서 filter() 함수 는 인수를 목록과 함수로 받아들입니다. 목록의 항목을 통해 새 항목 목록을 반환하는 함수를 호출할 수 있습니다. 이 새로 생성된 목록에 대한 함수는 True 로 평가됩니다 .

목록에 포함된 짝수를 필터링하는 데 사용되는 filter() 함수 의 예가 아래에 나와 있습니다.

원천

프로그램에 의해 생성된 출력은 새 목록 [4, 6, 8, 12]입니다.

map()이 있는 Python 람다 함수

목록과 함수는 python map() 함수에서 인수로 사용됩니다. 목록에 포함된 모든 항목은 함수에서 반환된 항목과 함께 새로 생성된 목록을 반환하는 함수를 호출합니다.

결론

파이썬 람다 함수는 한 줄로 되어 있고 이름 없이 선언되는 함수, 즉 익명 함수입니다. 하나의 표현식만 가질 수 있는 람다 함수에 여러 개의 인수를 전달할 수 있습니다. 때로는 람다 함수를 인수로 다른 함수에 전달할 수 있습니다. 파이썬에서 키워드 'def'로 정의된 함수는 일반 함수처럼 작동할 수 있습니다.

따라서 이 기사에서는 Python의 람다 함수 개념, 다른 함수와의 적용 및 몇 가지 예에 대해 설명했습니다. 프로그래밍 언어에 대한 전문 지식을 얻고 코딩 기술을 마스터하는 데 더 관심이 있는 경우 upGrad 에서 제공하는 " 데이터 과학의 Executive PG Program " 과정을 확인할 수 있습니다. 데이터 과학에서 코딩 기술을 습득하고자 하는 21~45세의 모든 초급 전문가를 위해 특별히 설계되었습니다. 꿈을 향해 한 발짝 내디딜 의향이 있다면 앞으로 나와 코스의 장점을 살펴보세요. 실무형 산업 프로젝트를 통해 IIIT-B에서 제공하는 과정은 귀하의 요구 사항을 충족하고 다가오는 최고의 산업에 대비할 수 있도록 설계되었습니다.

일반 함수와 람다 함수의 차이점은 무엇입니까?

우리는 파이썬의 함수가 def 키워드를 사용하여 정의된다는 것을 알고 있습니다. 유사하게, 람다 함수는 람다 키워드를 사용하여 정의됩니다. 둘의 차이점을 깊이 이해하려면 아래 예를 고려하십시오.
# 일반 함수 def sq(x): return x*x # 람다 함수 lambda_sq = 람다 x: x*x # 일반적으로 호출 # 정의된 함수 print(sq(10)) # 람다 함수 사용 print(lambda_sq(10)) }
위의 예는 숫자의 제곱을 계산하는 2개의 함수를 보여줍니다. 람다가 없으면 sq(x) 함수를 만든 다음 제곱을 반환해야 합니다. 반면에 람다에서는 전체 함수가 한 줄로 끓어올랐습니다. Lambda에는 return 문이 필요하지 않습니다.