안녕세계

[Python] lambda 함수 본문

[Python] lambda 함수

Junhong Kim 2019. 1. 3. 21:28
728x90
반응형


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