파이썬 람다 클로저

Rohan Timalsina 2023년6월21일
  1. Python에서 Lambda 함수를 사용하기 위한 구문
  2. Python에서 Lambda 함수 사용
  3. Python에서 클로저 함수 사용
파이썬 람다 클로저

람다 함수는 이름 없이 정의됩니다. Python에서는 익명 함수라고도 합니다.

우리는 def 키워드를 사용하여 Python에서 일반 함수를 정의하는 반면 lambda 키워드는 람다 함수를 정의하는 데 사용합니다.

이 튜토리얼은 Python에서 람다 함수와 클로저를 사용하는 방법을 알려줍니다.

Python에서 Lambda 함수를 사용하기 위한 구문

Python에서 람다 함수의 구문은 다음과 같습니다.

lambda arguments: expression

람다 함수는 여러 인수만 가질 수 있지만 표현식은 하나만 가질 수 있습니다. 식을 평가하고 결과를 반환합니다.

Python에서 Lambda 함수 사용

다음 예제는 주어진 값에 5를 더하고 결과를 출력합니다.

def total(a):
    return a + 5


print(total(10))

출력:

15

여러 인수를 추가하고 결과를 반환합니다.

def total(a, b, c):
    return a + b + c


print(total(10, 15, 20))

출력:

45

위의 예에서 lambda a,b,c: a+b+ca,b,c가 인수이고 a+b+c가 식인 람다 함수입니다. 표현식이 계산되어 출력에 표시됩니다.

람다 함수에는 이름이 없으며 total 변수에 할당됩니다.

이 줄:

def total(a, b, c):
    return a + b + c

다음과 동일합니다.

def total(a, b, c):
    return a + b + c

Python에서 클로저 함수 사용

클로저를 배우기 전에 먼저 Python의 중첩 함수 및 비지역 변수 개념을 이해해야 합니다.

중첩 함수는 다른 함수 내에서 정의되며 바깥쪽 범위의 변수에 액세스할 수 있습니다.

이러한 로컬이 아닌 변수는 해당 범위 내에서만 액세스할 수 있으며 Python의 범위 밖에서는 액세스할 수 없습니다.

다음 예제에서는 로컬이 아닌 변수에 액세스하는 중첩 함수를 보여줍니다.

def outerFunc(txt):  # outer enclosing function
    def innerFunc():  # nested function
        print(txt)

    innerFunc()


outerFunc("Hello World")

출력:

Hello World

보시다시피 중첩 함수 innerFunc는 둘러싸는 함수 outerFunc의 비지역 변수 txt에 액세스했습니다.

클로저는 범위를 벗어나더라도 둘러싸는 범위의 값을 기억할 수 있는 함수 개체입니다.

def outerFunc(txt):  # outer enclosing function
    def innerFunc():  # nested function
        print(txt)

    return innerFunc


myFunc = outerFunc("Hello World")
myFunc()

출력:

Hello World

이 예에서 중첩 함수는 innerfunc() 함수를 호출하는 대신 반환합니다. outerFunc() 함수는 Hello World 텍스트로 호출되고 myFunc 변수에 할당됩니다.

그리고 myFunc()를 호출할 때 값이 범위 밖에서 기억되었습니다.

원래 함수를 제거해도 바깥쪽 범위의 값은 계속 기억됩니다.

del outerFunc
myFunc()

출력:

Hello World

다음은 Python에서 람다 함수와 클로저를 사용하는 간단한 데모입니다.

def sum(x):
    def total():
        def calc(x):
            return x + 5

        print(calc(x))

    return total


myFunc = sum(5)
myFunc()

출력:

10

이제 Python에서 람다 함수와 클로저를 사용하는 방법을 알아야 합니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

관련 문장 - Python Lambda