본문 바로가기
인공지능/파이썬 기초

콜백함수와 람다함수

by hyunji00pj 2024. 9. 30.

KDT_4기 파이썬 기초 0926(4)

2024.09.26 수업 내용 복습일기 네번째

 

오늘은 콜백함수와 람다함수에 대해 알아보자

1. 콜백함수(callback function)

콜백 함수는 다른 함수에 인자로 전달되어, 어떤 이벤트나 특정 조건에서 실행되게 되는 함수를 말합니다. 콜백 함수는 주로 비동기 작업이나 특정 이벤트 발생 시점에 어떤 동작을 수행할 때 사용됩니다.

  • 이벤트 기반 프로그래밍: 많은 이벤트 기반 프로그래밍 환경에서는 이벤트 발생 시점에 콜백 함수를 실행하여 사용자에게 알리거나 특정 동작을 수행합니다.
  • 비동기 작업: 특히 비동기 처리를 할 때, 작업의 완료나 실패 시점에 콜백 함수를 실행하여 결과를 반환하거나 오류를 처리합니다.
  • 코드의 유연성: 콜백 함수를 사용하면 함수나 클래스의 코드를 변경하지 않고도 동작을 확장하거나 수정할 수 있습니다.
def callback_func(func):
  for i in range(5):
    func()
def print_hello():
  print('안녕하세요 파이썬')
  
print_hello()

callback_func(print_hello)

def callback_func(func,num):
  for i in range(num):
    func(i)
def print_hello(num):
  print('안녕하세요 파이썬',num)
def print_hi(num):
  print('안녕하세요파이썬',num)
callback_func(print_hello,3)

callback_func(print_hi,4)

2. 람다 함수(Lambda Function)

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

lambda arguments: expression
def square(x):
  return x**2
print(square(5))

square = lambda x: x**2 #이름
print(square(5))

(lambda x: x**2)(5) #익명

people = [
    {'name':'오렌지','age':30},
    {'name':'김사과','age':20},
    {'name':'반하나','age':25}
]

def sort_age(x):
  return x['age']
people[0]

print(sort_age(people[0]))

sorted_people = sorted(people,key=sort_age)
print(sorted_people)

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

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

>>> 결과
[{'name': '김사과', 'age': 20}, {'name': '반하나', 'age': 25}, {'name': '오렌지', 'age': 30}]

3. 람다가 유용하게 사용되는 대표적인 함수

3-1.1. filter 함수

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

  • 이터레이터 내부를 코랩이 찍어주진 않아서 리스트로 감싸주어야함
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))#필터링되는 기준이 되는 함수를 넣음 ,뒤에는 필터링 할 그 데이터를 넣음
print(result) #리트스를 씌워서 이터레이터 반환값을 리스트로 보여짐

result = list(filter(lambda n: n%2 == 0,li))
print(result)

3-2. map 함수

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

num = [1,2,3,4,5]
squared_num = list(map(lambda x: x**2,num))
print(squared_num)

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

words = ['apple','banana','orange','cherry']
upper_words = list(map(lambda x: x.upper(),words))
print(upper_words)

'인공지능 > 파이썬 기초' 카테고리의 다른 글

클로저와 데코레이터  (0) 2024.10.01
객체지향과 클래스  (4) 2024.10.01
변수의 범위  (2) 2024.09.30
사용자 정의 함수 (feat.None)  (0) 2024.09.30
컬렉션과 반복문 컴프리헨션  (0) 2024.09.29