파이썬 람다 클로저
람다 함수는 이름 없이 정의됩니다. 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+c
는 a,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에서 람다 함수와 클로저를 사용하는 방법을 알아야 합니다. 이 튜토리얼이 도움이 되었기를 바랍니다.