-
61 - (파이썬) 콜백함수, map/filter 함수study with Q - 파이썬 2024. 7. 1. 21:20
#콜백함수
: 매개변수로 전달하는 함수를 (정확하게는 내가 아닌 다른 놈이 로출하는 함수) 콜백함수 라고 한다
# 함수를 변수에 저장하기def ctt(): pass v = ctt() print(v) >>> None
→ ctt라는 함수를 만들고, v라는 변수에 함수를 괄호까지 넣은 다음 출력을 하게 되면 ctt라는 함수가 아무것도 return하고 있지 않기 때문에 None을 return하는 것을 볼 수 있다.
그런데 이렇게 함수를 호출하는 것이 아니라 v라는 변수에 함수를 (괄호를 제외하고) 넣은 다음 실행하면
def ctt(): pass v = ctt print(v) >>> <function ctt at 0x7ab1067a7f40>
변수 v에 ctt라는 함수가 들어있는 것을 확인할 수 있다.
따라서 변수 v를 호출할 때 ctt를 호출하는 것을 볼 수 있다.
def ctt(): print("ctt가 호출되었습니다.") v = ctt print(v) v() >>> <function ctt at 0x713dc2553f40> ctt가 호출되었습니다.
# 함수를 매개변수로 전달하기
def c_10_t(함수) : # 함수 = pr_hi가 들어오고 그것을 호출했기 때문에 함수() def pr_hi(): print("hi there") #매개변수를 함수로 입력해서 전달 c_10_t(pr_hi) >>> hi there
파이썬 튜터로 보면 이런거
이름대로 10번 호출하도록 수정하면
def c_10_t(함수) : # 함수 = pr_hi가 들어오고 그것을 호출했기 때문에 for i in range(10) : 함수() def pr_hi(): print("hi there") #매개변수를 함수로 입력해서 전달 c_10_t(pr_hi) >>> hi there hi there hi there hi there hi there hi there hi there hi there hi there hi there
: 그래서 매개변수로 전달하는 함수를 (정확하게는 내가 아닌 다른 놈이 로출하는 함수) 콜백함수 라고 한다.
# 콜백함수에 매개변수 전달하기
def c_10_t(cbfun) : # 함수 = pr_hi가 들어오고 그것을 호출했기 때문에 for i in range(10) : cbfun(i) def pr_hi(매개): print("hi there",매개) #매개변수를 함수로 입력해서 전달 c_10_t(pr_hi) >>> hi there 0 hi there 1 hi there 2 hi there 3 hi there 4 hi there 5 hi there 6 hi there 7 hi there 8 hi there 9
드디어 나왔구나...! map 함수# map()
: 첫 번째 매개변수로 함수를 받고 두 번째 매개변수로 리스트를 받는다. 그리고 최종적으로는 이터레이터라는 것을 return하게 된다.
: 각각의 요소에 함수를 적용해서 새로운 리스트(이터레이터)로 리턴한다.
이터레이터는 일단 리스트 비끄므리라고 생각하면 됩니당.
이터레이터는 "파이썬 매일 코딩"이라는 책을 참고하라고 하는디 다음 책으로...?def power(num): return num**2 liszt = [0, 1,2,3,4,5] 이터레이터 = map(power,liszt) print(list(이터레이터)) >>> [0, 1, 4, 9, 16, 25]
기억나니 리스트내포...
더보기def pwr(numb): return numb**2 print([ #표현식 numb**2 #반복문 for numb in range(1,10+1) #조건문 ]) >>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# filter()
: 첫 번째 매개변수로 함수를 받고 두 번째 매개변수로 리스트를 받는다. 그리고 최종적으로는 이터레이터라는 것을 return하게 된다.
: 리스트의 요소를 함수에 전달했을 때 결과로 True가 나오는 녀석을 모아서 새로운 리스트(이터레이터)를 만듦
def 홀수만(nb) : if nb%2 == 1: return True else : return False l = [1,2,3,4,5,6] iterator = filter(홀수만,l) print(list(iterator)) >>> [1, 3, 5]
기억나니 리스트내포...def on(number): return number print([ #표현식 number #반복문 for number in range(1,10+1) #조건문 if number%2 == 1 ]) >>> [1, 3, 5, 7, 9]
'study with Q - 파이썬' 카테고리의 다른 글
63 - (파이썬) 람다, key 키워드 매개변수 (0) 2024.07.03 62 - (파이썬) map/filter 함수 구현 (0) 2024.07.03 60 - (파이썬) 튜플, 이뮤터블 자료, 뮤터블 자료 (0) 2024.06.24 59 - (파이썬) 조기 리턴과 리스트 평탄화하는 재귀 함수 (0) 2024.06.23 58 - (파이썬) 재귀 함수, 피보나치 수, 메모화(memorization) (0) 2024.06.19