상세 컨텐츠

본문 제목

콜백함수와 람다함수

인공지능/파이썬

by Ryuzy 2023. 9. 7. 03:29

본문

728x90
반응형

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

 

 

2. 람다 함수(Lambda Function)

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

lambda 매개변수: 표현식

 

간결성: 람다 함수는 간단한 연산이나 작은 기능을 가진 함수를 간결하게 표현하는 데 유용합니다.

익명성: 람다 함수에는 명시적인 이름이 부여되지 않습니다. 그러나 필요에 따라 변수에 할당할 수 있습니다.

일회성: 일반적으로 특정 작업을 위한 일회성 함수로 사용됩니다.

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)

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

sorted_people = sorted(people, key=lambda x: x['age'])
print(sorted_people)

 

 

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

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)

 

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)

 

map() 함수는 결과를 이터레이터 형태로 반환하기 때문에 그 결과를 직접 출력하거나, 인덱싱하거나, 슬라이싱하기 위해서는 list()나 비슷한 함수를 사용하여 이터레이터를 실제 리스트나 다른 데이터 구조로 변환해야 합니다.

728x90
반응형

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

파이썬 상속  (1) 2023.09.11
객체지향과 클래스  (0) 2023.09.08
변수의 범위  (0) 2023.09.07
사용자 정의 함수  (2) 2023.09.07
컬렉션과 반복문  (1) 2023.09.06

관련글 더보기