
294
2
부
객체로서의 함수
7
.
4
익명 함수
lambda
키워드는 파이썬 표현식 안에 익명 함수를 생성한다.
그러나 파이썬의 단순한 구문은 람다 함수의 본체가 순수한 표현식으로만 구성되도록 제한한
다. 즉, 람다 본체에서는
while
,
try
등의 파이썬 문장을 사용할 수 없다.
=
를 사용한 할당문도
문장이므로 람다 안에 사용할 수 없다.
:=
를 사용한 새로운 할당 표현식 구문은 사용할 수 있지
만, 이 표현식이 필요할 정도라면 아마 람다가 너무 복잡하고 읽기 어려운 상황일 것이므로 리
팩터링해서
def
를 이용해 일반 함수로 만드는 편이 낫다.
익명 함수는 인수 목록 안에서 아주 유용하게 사용된다. 예를 들어 [예제
7
-
7
]은 철자를 거꾸
로 읽어 정렬하는 [예제
7
-
4
]의
reverse( )
함수 대신 람다를 사용하도록 수정한 코드다.
예제
7-7
lambda
를 이용해 철자를 거꾸로 읽어 단어 리스트를 정렬하기
>>> fruits = [‘strawberry’, ‘fig’, ‘apple’, ‘cherry’, ‘raspberry’, ‘banana’]
>>> sorted(fruits, key=lambda word: word[::-1])
[‘banana’, ‘apple’, ‘fig’, ‘raspberry’, ‘strawberry’, ‘cherry’]
>>>
고위 함수의 인수로 ...