*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*
1. 콜백 함수(callback function)
콜백 함수는 다른 함수에 인자로 전달되어, 어떤 이벤트나 특정 조건에서 실행되게 되는 함수를 말합니다. 콜백 함수는 주로 비동기 작업(요청-응답 상관없이 연산처리)이나 특정 이벤트 발생 시점에 어떤 동작을 수행할 때 사용됩니다. (반드시 이해해야함)
- callback=호출하다->함수를 변수로 호출한다는 의미
- def문으로 선언한 함수를 변수로 사용-> 함수*변수
#callback func()예시
def a():
print('출력 결과')
a()
def b(c):
for i in range(5):
c()
b(a)

#callback func()예시
def a(): #a()함수 생성
print('callback함수') #a()함수 출력시 결과
a() #a()함수 출력
def b(c): #b()함수,c매개변수 생성
for i in range(5): #반복문 0~4행 생성
c() #c매개변수에 0~4행 저장, c함수로 사용
b(a) #b함수에 a함수의 출력결과를 변수로 사용
#b(c매개변수 * a())

def a(func,num):
for i in range(num):
func(i)
def b(num): #함수의 결과값이 고정되어 있기 때문에
print('b함수 결과값',num) #함수를 변수로 사용가능함
def c(num):
print('c함수 결과값',num)
a(b,3)
a(c,6)

2. 람다 함수(lambda function)
람다 함수는 파이썬에서 익명의 간단한 함수를 생성하기 위한 특별한 구문입니다. "익명의 함수"라는 것은 함수에 고유한 이름이 지정되지 않았음을 의미합니다. 람다 함수는 일반적인 함수(def를 사용하여 정의)와는 달리, 한 줄로 표현되는 짧고 간결한 함수를 생성할 때 주로 사용됩니다.
- 익명 함수: 함수에 이름이 없다=메모리에 저장하지 않음.
- 람다는 ^ 을 의미함. 제곱의 의미
- def문을 사용하지 않은 def문 표현
#def표현
def s(x):
return x**2
s(6)
#람다표현
s=lambda x:x**2
print(s(6))
(lambda x:x**2)(5)
#딕셔너리안의 튜플자료형 키값으로 정렬하기
chocolate=[{'kind':'dark', 'count':5}, {'kind':'milk', 'count':3}, {'kind':'white', 'count':17}]
sorted_chocolate=sorted(chocolate, key=lambda x:x['count']) #kind키값을 기준으로 튜플 정렬
print(sorted_chocolate)
3. 람다가 유용하게 사용되는 대표적인 함수
람다함수에서 다음 2가지가 많이 사용됩니다.
- filter()
- map()
3-1. filter() 함수
filter()는 파이썬의 내장 함수로, 주어진 함수의 조건을 만족하는 항목만으로 이루어진 이터레이터를 반환합니다. 이 함수는 주로 리스트나 다른 순차적인 데이터 타입에서 특정 조건을 만족하는 항목들만을 필터링할 때 사용됩니다.
- 여러개가 저장된 자료구조에서 원하는 데이터만 뽑아서 사용
- filter()는 조건에서 맞는 결과만을 리턴
#filter()를 def문으로 표현
a=[-1,-2,-3,-4,0,1,2,3,4,]
def calculate(n):
if n >=0:
return True
else:
return False
result=list(filter(calculate,a))
print(result)
#filter()를 lambda표현
result=list(filter(lambda n:n>=0, a))
print(result)
3-2. map 함수
map()는 파이썬의 내장 함수로, 주어진 함수를 이터러블의 모든 항목에 적용하여 결과를 반환하는 이터레이터(순서가 있는 자료구조)를 생성합니다. 이 함수는 주로 리스트나 다른 순차적인 데이터 타입의 항목 각각에 함수를 적용할 때 사용됩니다.
- 이터레이터: 순서가 있는 자료구조
- map()은 모든 데이터에 모두 수식 적용하는 함수->모든 자료 리턴
#map
n=[1,2,3,4,5]
multiple_5=list(map(lambda x:x*5,n))
print(multiple_5)
#map() + 함수를 메서드로 콜백해서 활용하기
w=['one','two','three','four','five','six','seven']
upper_w=list(map(str.upper,w))
print(upper_w)
'Python 기초' 카테고리의 다른 글
파이썬 예제(과제)-4.객체지향 프로그래밍 (0) | 2024.03.18 |
---|---|
파이썬 기초(14)-객체지향(OOP)과 클래스(Class) (0) | 2024.03.18 |
파이썬 기초(12)-변수의 범위 (0) | 2024.03.18 |
파이썬 예제-3. 반복문 (0) | 2024.03.17 |
파이썬 기초(10)- 컬렉션과 반복문 (0) | 2024.03.15 |