[python 기초] lambda expressions

EMMA·2022년 3월 7일
0

함수의 간단한 표현식, lambda expression


지금까지 파이썬을 통해 배운 함수의 형태는, 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))

몇 개 문제를 풀어보자.

  1. 다음 코드를 실행해서 출력되는 출력결과를 확인해보고, types 모듈에 LambdaType 외에도 어떤 타입들이 있는지 조사해 보세요.
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: 파이썬 공식 문서)

  • FucntionType
  • LambdaType
  • GeneratorType
  • BuiltinFunctionType
  • MethodType
  • BuiltinMethodType
  • CoroutineType
  • ModuleType

  1. 비밀번호 확인 함수를 lambda expression으로 작성해 보세요.
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') )    
profile
예비 개발자의 기술 블로그 | explore, explore and explore

0개의 댓글