함수도 정수나 문자열처럼 변수에 담고, 인자로 넘기고, 반환이 가능
def hello():
return "hi"
x = hello # 호출이 아닌, 함수 자체를 변수에 담음, **괄호 없음**
x() # "()"를 붙여 호출
def apply(func, value):
return func(value) # func를 double에 넣음
def double(x):
return x * 2
apply(double, 5)
lambda는 이름 없는 일회용 함수, 이로 인해서 정의를 안하고 그 자리에서 만들기 가능
appy(lambda x: x * 2, 5)
lambda x: x * 2
│ └── **반환값 (return 생략됨)**
└── 인자
= def 이름없음(x): return x * 2 와 같음
실전 패턴
sorted, map, filter가 대표적
users = [("kim", 30), ("lee", 25), ("park", 40)]
# key에 "정렬 기준 함수"를 넘김
sorted(users, key=lambda u: u[1]) # 나이(인덱스 1) 기준 정렬
# [("lee", 25), ("kim", 30), ("park", 40)]
참고로 sorted(users, key=lambda u: u[1]
⇒ for u in users: print(u[1])