인라인 함수를 정의할 때 사용하며 익명 함수(anonymous functions) 또는 람다 표현식(lambda expression)이라고 부름.
우리가 배웠던 일반함수는
def name(arg1, arg2 ...):
block of statement
이며, 람다와의 차이점은
1. 이름의 유무
2. 일반 함수는 내부에서 처리하는 로직들을 여러문장으로 작성하는 불록으로 구성 할 수 있지만, 람다 표현식의 본체에는 인라인 형식의 간단한 표현식만 올 수 있고 return문이 없어도 표현석의 결과가 리턴됨.
람다의 가장 일반적인 형식
lambda argument1, argument2, ... argumentN : expression using arguments
일반 함수와의 차이
💡 사용 방법
1. 매개변수 두개를 받아 두수의 합을 리턴하는 간단한 함수
# 일반함수
def add(n,m):
return n+m
print(add(2,3))
# 결과값 5
# 람다식으로 표현
print((lambda n,m:n+m)(2,3))
# 결과값 5
print((lambda n,m: n if n%2==0 else m)(1,3))
# 결과값 3
print((lambda n,m: n if n%2==0 else m)(2,3))
# 결과값 2
import types
f = lambda x,y,z : x+y+z
print(f)
print(type(f))
print( type(f) == types.LambdaType)
>> <function f at 0x7fbd339684c0>
>> <class 'function'>
>> True
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
이함수에 있는 if문 두개를 람다표현식을 이용하여 다음과 같은 형식으로 작성해 보세요.
아래의 lambdas 리스트안에 두개의 람다표현식을 작성해야하며 주석으로 표시된 프린트가 출력결과로 나와야 합니다.
lambdas = [
]
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') ) # SHORT_PASSWORD
print( check_password_using_lambda('12356789f') ) # NO_CAPITAL_LETTER_PASSWORD
print( check_password_using_lambda('123456789fF') ) # True
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
]