본문 바로가기

코딩/파이썬

콜백함수와 람다함수

콜백함수(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)

 

안녕하세요! 파이썬! 0

안녕하세요! 파이썬! 1

안녕하세요! 파이썬! 2

 

callback_func(print_hi, 5)

 

하이! 파이썬! 0

하이! 파이썬! 1

하이! 파이썬! 2

하이! 파이썬! 3

하이! 파이썬! 4

 

람다 함수(Lambda Function)

: 파이썬에서 익명의 간단한 함수를 생성하기 위한 특별한 구문,

"익명의 함수"란 함수에 고유한 이름이 지정되지 않았음을 의미하는데,

일반 함수와는 달리 한 줄로 표현되는 짧고 간결한 함수를 생성할 때 주로 사용한다.

 

def square(x):
	return x ** 2
square(5)

 

25

 

square = lambda x: x ** 2

print(square(5))
print(square(4))

 

25

16

 

(lambda x: x**2)(5)

 

25

 

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

 

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

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

 

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

 

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

- 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)

 

[2, 10, 20, 22, 28]

 

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

 

[2, 10, 20, 22, 28]

 

- map함수

: 파이썬의 내장 함수로, 주어진 함수를 이터러블의 모든 항목에 적용하여 결과를 반환하는 이터레이터를 생성한다.

이 함수는 주로 리스트나 다른 순차적인 데이터 타입의 항목 각각에 함수를 적용할 때 사용한다.

 

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers)
list1 = [1, 2, 3]
list2 = [4, 5, 6]
summed = list(map(lambda x, y: x + y, list1, list2))
print(summed)

 

[5, 7, 9]

 

words = ['apple', 'banana', 'cherry']
uppercase_words = list(map(str.upper, words))
print(uppercase_words)

 

['APPLE', 'BANANA', 'CHERRY']

'코딩 > 파이썬' 카테고리의 다른 글

파이썬 과제 (2). 가위, 바위, 보 게임 만들기  (0) 2024.03.19
객체지향과 클래스1  (0) 2024.03.19
변수의 범위  (0) 2024.03.19
사용자 정의 함수  (0) 2024.03.18
컬렉션과 반복문  (0) 2024.03.15