ex = lambda x : x + 10
ex(1)
11
(lambda x: x + 10)(1)
11
def kkk(x):
return x + 10
list(map(kkk, [1,2,3]))
[11,12,13]
list(map(lambda x : x + 10, [1,2,3]))
[11,12,13]
a = [1,2,3,4,5,6,7,8,9,10]
list(map(lambda x : str(x) if x % 2 ==0 else x , a))
filter and reduce with lambda
def f(x):
return x > 5 and x <10
a = [8,3,2,10]
result = list(filter(f, a))
print(result)
[8]
--------------------------
a = [8,3,2,10]
list(filter(lambda x : x > 5 and x < 10, a))
[8]
from functools import reduce
def f(x, y):
return x + y
a = [1,2,3,4,5,6,7,8,9,10]
b = reduce(f, a)
print(b)
from functools import reduce
a = [1,2,3,4,5,6,7,8,9,10]
result = reduce(lambda x , y : x + y, a)
print(result)
사실 아직도 클로저를 정확하게 알고 있지 않지만.. 최대한 알려고 노력중이다.
활용해보고, 익혀야겠다.
클로저
일급 객체 함수의 개념을 이용하여, 스코프에 묶인 변수를 바인딩하기 위한 기술!
자 그럼 여기서 일급객체함수 라는것을 알아야 한다.
일급객체함수
우리가 일반적으로 사용하는 숫자, 문자열, 클래슬르 다루는 것처럼 함수도 다른 객체와 동일하게 사용가능하다는 말 (함수를 매개변수로 넘기고, 다른 변수에 대입하고 등등)
def cal():
a = 3
b = 5
def mul_add(x):
return a * x + b
return mul_add # 함수 자체를 반환할때는 ()를 하지 않는다.
c = cal()
print(c(1),c(2))
8 11
잘 보면 calc 가 끝났는데도 c 는 calc의 지역변수 a,b 를 사용해서 계산하고 있다.
이렇게 함수를 둘러싼 환경등을 유지하다가, 함수를 호출할 때 다시 꺼내서 사용하는 함수
프로그램의 흐름을 변수에 저장할 수 있는 특징 즉, 클로저는 지역변수와 코드를 묶어서 사용하고 싶을때 활용!!( 주변 환경을 기억한다....!!!)