-
Python 문법 기초 19 - 일급함수와 람다함수Python 2022. 10. 22. 16:31
# 일급함수 : 함수안에 함수, 인자로 함수 전달, 반환값이 함수 def func1(a, b): return a + b func2 = func1 print(func1(3, 4)) print(func2(3, 4)) print() def func3(func): # 가인수로 함수 수신 중(매개변수) def func4(): print('나는 내부함수야~') func4() return func # 반환값이 함수 mbc = func3(func1) # 실인자로 함수(주소) 전달!(인자) print(id(mbc)) print(id(func1)) print(mbc(3, 4)) <console> 7 7 나는 내부함수야~ 1685379150032 1685379150032 7람다함수
print('Lambda : 축약함수, 이름이 없는 한 줄 짜리 함수') # 형식 : 'lambda 인자(여러개 사용가능) : 표현식' return 없이 결과를 반환 # def를 쓸 정도로 복잡하지 않거나, def를 적용할 수 없는 곳에 사용하면 효과적 def Hap(x, y): return x + y print(Hap(1, 2)) print((lambda x, y : x + y)(1, 2)) g = lambda x, y: x + y print(g) # 람다도 함수이기때문에 주소를 출력하게 된다. print(g(3,4)) <console> Lambda : 축약함수, 이름이 없는 한 줄 짜리 함수 3 3 <function <lambda> at 0x0000018868EB6160> 7간단한 함수를 축약해서 사용하기 위해 람다함수를 많이 사용한다.
kbs = lambda a, su= 10:a + su print(kbs(5)) print(kbs(5, 6)) sbs = lambda a, *tu, **di:print(a, tu, di) sbs(1,2,3,m=4,n=5) <console> 15 11 1 (2, 3) {'m': 4, 'n': 5}li = [lambda a, b : a + b, lambda a : a + 5] print(li[0](3, 4)) print(li[1](3)) <console> 7 8list 형식으로 인덱싱 해서 람다함수를 선택하여 적용시킬 수도 있다.
print('어떤 함수의 인자로 람다를 사용') # filter(함수, 집합형자료) print(list(filter(lambda a : a < 5, range(10)))) print(list(filter(lambda a : a % 2, range(10)))) # a % 2 의 값은 나머지가 0이 되기 때문에 false로 나와서 값은 true인 홀수만 나온다. <console> 어떤 함수의 인자로 람다를 사용 [0, 1, 2, 3, 4] [1, 3, 5, 7, 9]list 타입으로 filter 함수를 호출 후 인자로 람다함수를 호출한다. 그럼 filter로 걸러진 값만 출력이된다.
문제 1) 1 ~ 100 사이의 정수 중 5의 배수이거나 7의 배수만 걸러서 출력
# 1 ~ 100 사이의 정수 중 5의 배수이거나 7의 배수만 걸러서 출력 print(list(filter(lambda a : a % 5 == 0 or a % 7 == 0, range(1, 101)))) for i in range(1, 101): if i % 5 == 0 or i % 7 == 0: print(i, end = ' ') <console> [5, 7, 10, 14, 15, 20, 21, 25, 28, 30, 35, 40, 42, 45, 49, 50, 55, 56, 60, 63, 65, 70, 75, 77, 80, 84, 85, 90, 91, 95, 98, 100] 5 7 10 14 15 20 21 25 28 30 35 40 42 45 49 50 55 56 60 63 65 70 75 77 80 84 85 90 91 95 98 100람다 함수를 사용하여 list 타입으로 출력하는 모습을 볼 수 있다.
'Python' 카테고리의 다른 글
Python 문법 기초 21 - 재귀 함수(Recursive function) (0) 2022.10.22 Python 문법 기초 20 - 함수 장식자(decorator) (0) 2022.10.22 Python 문법 기초 18 - 클로저(closure) (0) 2022.10.22 Python 문법 기초 17 - argument(인자) 와 parameter(매개변수) (0) 2022.10.22 Python 문법 기초 16 - 변수의 접근 순서 (0) 2022.10.22