안녕세계
[Python] lambda 함수 본문
[Python] lambda 함수
Junhong Kim 2019. 1. 3. 21:28728x90
반응형
lambda
는 함수를 생성할 때 사용하는 예약어로 def
와 동일한 역할을 합니다.
lambda parameter1[, parameter2] ..: <expression_statement>
lambda 예제
ld = lambda x, y: x+y
print(ld(1, 2))
lambda 예제와 동일 def 예제
def sum(x, y):
return x + y
print(sum(1, 2))
# 3
def
가 있는데 lambda
가 존재하는 이유는?
1. lambda는 def 보다 간결하게 함수를 정의할 수 있습니다.
2. lambda는 def를 사용할 수 없는 곳에서 사용할 수 있습니다.
3. 익명함수이기 때문에 한번 쓰이고 다음줄로 넘어가면 heap 메모리 영역에서 사라집니다.
- 가비지 컬렉터는 참조하는 객체가 없으면 지워버립니다.
- 파이썬에서는 모든 것이 객체로 관리되고 각 객체들은 레퍼런스 카운터를 갖게 됩니다.
- 레퍼런스 카운터가 0이 될때 (=누구도 참조하지 않을 때) 메모리를 반납합니다.
ld = [lambda x, y: x + y, lambda x, y: x * y]
print(ld)
# [<function <lambda> at 0x103abfe18>, <function <lambda> at 0x103ceb0d0>]
print(ld[0])
# <function <lambda> at 0x103abfe18>
print(ld[0](1, 2))
# 3
print(ld[1](1, 2))
# 2
lambda & filter 예제
people = [
{'name': 'kim', 'age': 10},
{'name': 'lee', 'age': 20},
{'name': 'park', 'age': 30},
{'name': 'choi', 'age': 40},
{'name': 'kim', 'age': 50}
]
ret = list(filter(lambda person: person['name'] == 'kim', people))
print(ret)
# [{'name': 'kim', 'age': 20}, {'name': 'kim', 'age': 60}]
References
https://wikidocs.net/24
728x90
반응형
'Language > Python' 카테고리의 다른 글
[Python] map 함수 (0) | 2019.01.05 |
---|---|
[Python] list 자료형 (0) | 2019.01.04 |
[Python] filter 함수 (0) | 2019.01.02 |
[Python] try..except 예외처리 (0) | 2018.12.03 |
[Python] dictionary 자료형 (0) | 2018.12.03 |
Comments