오늘의 실습은 이 함수를 lambda 함수로 바꾸는 연습을 할겁니다.
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
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 리스트안에 두개의 람다표현식을 작성해야하며
- 주석으로 표시된 프린트가 출력결과로 나와야 합니다.
ㄷㄷ 이대로 나뚜지 왜 람다로..
위 코드를 람다로 구현하기 위해서는 2개의 람다식이 필요한데요..
1.
if len(password) < 8:
return 'SHORT_PASSWORD'
2
if not any(c.isupper() for c in password):
return 'NO_CAPITAL_LETTER_PASSWORD'
1번부터 람다 식으로 바꾸어 볼까요?
check_password_using_lambda 함수에서 for문을 통해 람다식을 다 검사 하므로
리스트안에 람다식을 작성합니다.
lambdas = [
lambda x: "SHORT_PASSWORD" if len(x) < 8 else None,
]
- 아규먼트 : x
- 참일 경우 반환값 "SHPRT_PASSWORD"
- 거짓일 경우 None
여기서 왜 거짓일 경우 None을 반환 할까요?
네!! 람다식을 호출하는 check_password_using_lambda 함수에서 통과되면 None이 되야 해당 함수가 안돌아가기 때문입니다.
def check_password_using_lambda(password):
for f in lambdas:
if f(password) is not None:
return f(password)
return True
None 말고 다른 값이 호출이 된다면 결국 True가 호출 되겠군요.
2번 람다 식으로 바꾸기
lambdas = [
lambda x: "SHORT_PASSWORD" if len(x) < 8 else None,
lambda x: "NO_CAPITAL_LETTER_PASSWORD" if not any(c.isupper() for c in x) else None,
]
- 아규먼트 : x
- 참일 경우 반환값 "NO_CAPITAL_LETTER_PASSWORD" 거짓일 경우 None
- any는 전달받은 자료형의 element 중 하나라도 True일 경우 True를 돌려준다.
- 거짓일 경우 None
전체 소스코드
lambdas = [
lambda x: "SHORT_PASSWORD" if len(x) < 8 else None,
lambda x: "NO_CAPITAL_LETTER_PASSWORD" if not any(c.isupper() for c in x) 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') ) # SHORT_PASSWORD
print( check_password_using_lambda('12356789f') ) # NO_CAPITAL_LETTER_PASSWORD
print( check_password_using_lambda('123456789fF') ) # True
결과값
'Python' 카테고리의 다른 글
[Python] Multiprocessing (2) | 2020.06.29 |
---|---|
[Python] Thread (0) | 2020.06.29 |
[Python] import types (0) | 2020.06.28 |
[Python] Lambda (0) | 2020.06.27 |
[Python] Generator Or Iterator 코드 분석 실습 (0) | 2020.06.27 |
댓글