지금까지 파이썬을 통해 배운 함수의 형태는, def 함수명()
이다.
lambda expression은 이를 더 간단한 형식으로 표현할 수 있다.
#일반 함수
def add_func(x,y,z):
return x+y+Z
#lambda expression
add_func = lambda x,y,z: x+y+z
lambda expression은 아래와 같이 응용 가능하다.
lambdas = [lambda x: x**2, lambda x: x**3, lambda x: x**4]
for lambda in lambdas:
print(lambda(2))
몇 개 문제를 풀어보자.
import types
f = lambda x,y,z: x+y+z
print(f) ><function <lambda> at 0x10ce4a4d0>
print(type(f)) ><class 'function'>
print(type(f)==types.LambdaType) >True
그 외 types 모듈에는 아래와 같은 타입들이 있다. (details: 파이썬 공식 문서)
def check_password(password):
if len(password) < 8:
return 'SHORT_PASSWORD'
if not any(c.isupper() for c in password):
return 'NO_CAPITAL_LETTER_PASSWORD'
return True
lambda로 바꾸면 아래와 같다.
lambdas = [
lambda password: "SHORT_PASSWORD" if len(password) < 8 else None,
lambda password: "NO_CAPITAL_LETTER_PASSWORD" if not any (c.isupper() for c in password) else None
]
def check_password_using_lambda(password):
for f in lambdas:
if f(password) is not None:
return f(password)
return True
print( check_password_using_lambda('123') )
print( check_password_using_lambda('12356789f') )
print( check_password_using_lambda('123456789F') )