람다는 이해하는 내용보다 규칙을 숙지하는 것이 우선이다. 하나의 문법이기 때문이다.
람다는 함수의 이름을 제거하고 내용을 반환하는 형태이다.
아래는 람다식의 모습이다
ref = lambda s: print(s)
ref("Hello") # Hello 출력
상단의 코드를 보듯이 람다식은 함수의 이름이 없는 것을 알 수 있다. 다만 매개변수와 함수의 몸체는 존재한다.
또한 주의할 점은 람다식을 쓸 때 몸체에 return 을 넣어주면 안 된다. 애당초 return 이 적용된 문법이기 때문이다.
그렇다면 람다식은 언제 유용하게 사용될 수 있을까? 보통은 간단한 인라인 콜백 함수를 만들 때 유용하게 사용될 수 있다. 다른 컴포넌트에서 사용되지 않는다면 해당 컴포넌트만을 위한 람다식이 적절할 것이다.
kwargs
)object.__init__()
나 object.__lt__()
와 같은, 일부 내장 데이터형과 베이스 클래스의 메서드의 형.object().__str__
의 형입니다.dict.__dict__['fromkeys']
와 같은 일부 내장 데이터형의 연결되지 않은(unbound) 클래스 메서드의 형.list[int]
와 같은 매개 변수화된 제네릭의 형입니다.sys.exc_info()[2]
에서 발견되는 것과 같은 트레이스백 객체의 형.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 = [
lambda pw: 'SHORT_PASSWORD' if len(pw) < 8 else None
lambda pw: 'NO_CAPITAL_LETTER_PASSWORD' if not any(c.isupper() for c in pw) 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('123456789F') ) # True
1. 윤성우 열혈 파이썬 중급
2. 파이썬 공식 문서
https://docs.python.org/ko/3.9/library/types.html
3. 이것저것 공부하자
https://king-minwook.tistory.com/45?category=790107