개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
2월 4일(금)
lambda expressions
lambda란?
- 람다(lambda)는 인라인 함수를 정의할 때 사용하며, 익명함수 또는 람다 표현식이라고 부른다.
- 람다 표현식은 일반함수와 달리 함수의 이름이 없고, 인라인 형식의 간단한 표현만 올 수 있으며 return문 없이도 표현식의 결과가 반환된다는 것이다.
- 람다 표현식은 주로 간단한 함수 대신 사용되며, 인라인 표현식으로 작성되기 때문에 코드가 간결해지는 장점이 있다. (간단한 함수임에도 함수이름을 만들어야 하며, 다른 함수이름과의 충돌 가능성을 고려해야 하는 불편함을 해소할 수 있음)
- 람다 표현식은 nested(중첩) 될 수도 있고 복잡한 구조를 가질 수도 있지만, 가장 일반적인 형식은 아래와 같다.
(참고)
lambda argument1, argument2, ... , argumentN : expression using arguments
lambda expressions 활용 예시
예시(1)
# lambda expression 예시
f = lambda x,y,z : x+y+z
print(f(1,2,3))
# 출력 : 6
# 일반함수 예시(비교)
def add_func(x,y,z):
return x+y+z
print(add_func(1,2,3))
# 출력 : 6
예시(2)
# lambda expression 예시
Lambdas = [
lambda x : x ** 2,
lambda x : x ** 3,
lambda x : x ** 4
]
for lambda_func in Lambdas:
print(lambda_func(2))
'''
출력 :
4
8
16
'''
# 일반함수 예시(비교)
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))
'''
출력 :
4
8
16
'''
예시(3) : if-else문을 포함한 람다 표현식
# lambda expression 예시
lambdas = [
lambda password : 'SHORT_PASSWORD' if len(password) < 8 else '',
lambda password : 'NO_CAPITAL_LETTER_PASSWORD' if not any(c.isupper() for c in password) else ''
]
def check_password_using_lambda(password):
for f in lambdas:
if len(f(password)) > 0:
return f(password)
return True
print(check_password_using_lambda('123'))
print(check_password_using_lambda('12356789f'))
print(check_password_using_lambda('123456789F'))
'''
출력 :
SHORT_PASSWORD
NO_CAPITAL_LETTER_PASSWORD
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
print(check_password('123'))
print(check_password('12356789f'))
print(check_password('123456789F'))
'''
출력 :
SHORT_PASSWORD
NO_CAPITAL_LETTER_PASSWORD
True
'''
'기타' 카테고리의 다른 글
TIL - 22.02.08 (0) | 2022.02.08 |
---|---|
TIL - 22.02.07 (0) | 2022.02.07 |
TIL - 22.02.03 (0) | 2022.02.03 |
TIL - 22.02.02 (0) | 2022.02.02 |
TIL - 22.02.01 (0) | 2022.02.02 |
댓글