람다함수(익명함수)
파이썬에서는 람다함수를 통해 이름이 없는 함수를 만들 수 있다.
람다함수의 장점은 코드의 간결함 메모리의 절약이라고 할 수 있다.
lambda 매개변수 : 표현식
두 수를 더하는 함수)
>>> def hap(x, y):
... return x + y
...
>>> hap(10, 20)
30
위와 같은 함수를 람다 함수로 표현하면 아래와 같이 간결하게 작성할 수 있다.
>>> (lambda x,y: x + y)(10, 20)
30
람다함수는 결과부분된 부분을 return키워드 없이 자동으로 return해 준다.
익명함수라는 이름처럼 lambda함수는 함수의 이름을 지정하지 않는다.
>>> lambda x : x + 1
위와 같은 람다함수는 인자로 받은 숫자에 +1을 해주는 함수입니다. 람다 함수는 정의와 동시에 사용할 수 있다.
>>> (lambda x : x+1)(3)
4
하지만 함수에 이름이 없고, 저장된 변수가 없기 때문에 다시 사용할 수는 없다.
물론 람다함수도 객체이기 때문에 정의와 동시에 변수에 담을 수는 있다.
>>> func = lambda x : x + 1
>>> func(4)
5
람다함수 사용 예
sorted함수의 경우 key위치인자에 함수를 보내서, 함수에서 지장한 결과값에 따라서 정렬을 할 수 있습니다.
다음과 같은 문자를 정렬할때
target = [' cat ', ' tiger ', ' dog', 'snake ']
알파벳 순서가 아니라, 앞뒤 불필요한 공백을 제외한 문자의 길이로 정렬을 하고 싶다면,
정렬의 기준으로 사용할 값을 리턴하는 함수를 생성하여, sorted함수에 넘겨줘야 한다.
def my_key(string):
return len(string.strip())
target = [' cat ', ' tiger ', ' dog', 'snake ']
print(sorted(target, key=my_key))
하지만 my_key라는 함수는 이번 정렬만을 위한 함수입니다. 재사용할 이유가 없다면 lambda 함수를 생성하여 넘겨주는 편이 낫다.
target = ['cat', 'tiger', 'dog', 'snake']
print(sorted(target, key=lambda x : len(x.strip())))
'파이썬(Python)' 카테고리의 다른 글
[Python] 함수와 메소드의 차이점 (0) | 2023.02.05 |
---|---|
[Python] 할당과 복사 / 얕은 복사, 깊은 복사 (shallow copy, deep copy) (1) | 2023.01.31 |
[Python] sys.stdin.readline / raw_input() / input() 차이 (0) | 2022.12.05 |
댓글