인라인 함수를 정의 할때 사용하며 익명함수 또는 람다 표현식이라고 부름
우리가 배웠던 함수
def name(arg1, arg2 ...): block of statement
람다와의 차이점
이름의 유무
함수는 내부에서 처리하는 로직들을 여러 문자으로 작성하는 블록으로 구성할 수있는 반면, 람다 표현식만 올수 있고 함수와 같이 return문이 없이도 표현식의 결과를 리턴
람다표현식
lambda argument1, argument2, ... argumentN : expression using arguments
람다의 간단한 실제 예제
f = lambda x,y,z : x+y+z
print(f) # <function <lambda> at 0x10343e710>
print(f(1,2,3))
여기서 x,yz는 argument1,2,3에 해당하고 expression은 x+y+z에 해당
호출해보면 6을 출력되는 것을 확인
간단한 인라인 콜백함수를 만들거나 함수안에서 복잡한 처리를 할 수 없을 때 유용하다고 하수 있다.
콜백 함수란?
어떤 이벤트가 발생했을 때 호출되는 함수인데 콜백함수가 여러 블록으로 구성된 실행문이 아니고 다른 컴포넌트에서 사용되지 않는다면 해당 컴포넌트만을 위한 람다 표현식이 적절할 것
Lambdas = [
lambda x : x ** 2,
lambda x : x ** 3,
lambda x : x ** 4
]
for lambda_func in Lambdas:
print( lambda_func(2) )
def square(x):
return x ** 2
def power_3(x):
return x ** 3
def power_4(x):
return x ** 4
powers = [ square, power_3, power_4 ]
for f in powers:
print( f(2) )