파이썬(python)

15. 콜백 함수 & 람다 함수

인공지능파이썬 2024. 9. 27. 09:16
1. 콜백함수(callback function)
* 콜백 함수는 다른 함수에 인자로 전달되어, 어떤 이벤트나 특정 조건에서 실행되게 되는 함수를 말합니다. 
* 콜백 함수는 주로 비동기 작업이나 특정 이벤트 발생 지점에 어떤 동작을 수행할 때 사용됩니다.


1)
def callback_func(func):
  for i in range(5):
    func()
def print_hello():
  print('안녕하세요 파이썬')
print_hello()
-->
안녕하세요 파이썬


2)
callback_func(print_hello)
-->
안녕하세요 파이썬
안녕하세요 파이썬
안녕하세요 파이썬
안녕하세요 파이썬
안녕하세요 파이썬


3)
def print_hello(num):
  print('안녕하세요 파이썬', num)
print(print_hello)
-->
<function print_hello at 0x7c839e1f9f30>


4)
def print_hi(num):
  print('하이 파이썬', num)
print_hi(1)
-->
하이 파이썬 1


5)
def callback_func(func):
    for i in range(5):
        func()
        
def print_hello():
    print('안녕하세요! 파이썬!')
#print_hello()
callback_func(print_hello)
-->
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!


2. 람다 함수
* 람다 함수는 파이썬에서 익명의 간단한 함수를 생성하기 위한 특별한 구문입니다.
* "익명의 함수"라는 것은 함수에 고유한 이름이 지정되지 않았음을 의미합니다. 
* 람다 함수는 일반적인 함수(def를 사용하여 정의)와는 달리, 한 줄로 표현되는 짧고 간결한 함수를 생성할 때 주로 사용됩니다.

*람다 함수의 정의
 lamda arguments : expression
 

람다 함수 예시)
1)
def square(x):
  return x**2
print(square(5))
-->
25

2)
square = lambda x: x**2  #lamda 는 리턴형 반환
print(square(5))
print(square(5))
-->
25

3)
(lambda x: x**2)(5)
-->
25


4)
people = [ {'name': '반하나', 'age': 25}, {'name': '김사과', 'age': 20},  {'name': '오렌지', 'age': 30}]
sorted_people = sorted(people, key=lambda x:x ['age'])
sorted_people
print(sorted_people)
-->
[{'name': '김사과', 'age': 20}, {'name': '반하나', 'age': 25}, {'name': '오렌지', 'age': 30}]


5)
people [0]
-->
{'name': '김사과', 'age': 20}


6)
print(sort_age(people [0]))
-->
20


7)
sorted_people = sorted(people, key=sort_age)
print(sorted_people)
-->
[{'name': '김사과', 'age': 20}, {'name': '반하나', 'age': 25}, {'name': '오렌지', 'age': 30}]


8)
print(people)
sorted_people = sorted(people, key=sort_age, reverse=True)  #key=sort_age는 담아둔 key(바구니)
print(sorted_people)
-->
[{'name': '반하나', 'age': 25}, {'name': '김사과', 'age': 20}, {'name': '오렌지', 'age': 30}]
[{'name': '오렌지', 'age': 30}, {'name': '반하나', 'age': 25}, {'name': '김사과', 'age': 20}]


9)
print(people)
sorted_people = sorted(people, key=lambda x: x['age'])  ##메모리 아껴쓸수 있다 key 대신에 한번쓰고 사라진다.
print(sorted_people)
-->
[{'name': '반하나', 'age': 25}, {'name': '김사과', 'age': 20}, {'name': '오렌지', 'age': 30}]
[{'name': '김사과', 'age': 20}, {'name': '반하나', 'age': 25}, {'name': '오렌지', 'age': 30}]


3. 람다가 유용하게 사용되는 대표적인 함수
3-1.filter함수
* filter()는 파이썬의 내장함수로, 주어진 함수의 조건을 만족하는 항목만으로 이루어진 이터레이터를 반환합니다. 
* 이 함수는 주로 리스트나 다른 순차적인 데이터 타입에서 특정 조건을 만족하는 항목들만을 필터링할 때 사용됩니다.


1)
li = [2,5,7,10,15,17,20,22,25,28]

def even(n):
  if n%2 == 0:
    return True
  else:
    return False
result = list(filter(even, li))  #list로 감싸줘야 뽑아줘야 뿌려질수 있다
print(result)
-->
[2, 10, 20, 22, 28]


2)
result = list(filter(lambda n: n%2 == 0, li))
print(result)
-->
[2, 10, 20, 22, 28]


3-2.map 함수
map()는 파이썬의 내장 함수로, 주어진 함수를 이터러블이 모든 항복에 적용하여 결과를 반환하는 이터레이터를 생성합니다. 이 함수는 주로 리스트나 다른 순차적인 데이터 타입의 항복 각각에 함수를 적용할 때 사용됩니다.


1)
num = [1, 2, 3, 4, 5]
squared_num = list(map(lambda x : x**2, num))     #제곱을 구한다 
print(squared_num)
-->
[1, 4, 9, 16, 25]


2)
li1 = [1, 2, 3]
li2 = [4, 5, 6]
sum = list(map(lambda x, y: x+y, li1, li2))
print(sum)
-->
[5, 7, 9]


3)
words = ['apple', 'banana', 'orange', 'cherry']
upper_words = list(map(lambda x: x.upper(),words))
print(upper_words)
-->
['APPLE', 'BANANA', 'ORANGE', 'CHERRY']

 

 

 

728x90
LIST

'파이썬(python)' 카테고리의 다른 글

17. 클로저  (2) 2024.09.30
16. 객체지향과 클래스  (2) 2024.09.27
14. 변수의 범위  (2) 2024.09.27
13. 사용자 정의 함수  (2) 2024.09.26
12. 컬렉션 & 반복문  (2) 2024.09.26