함수도 정수나 문자열처럼 변수에 담고, 인자로 넘기고, 반환이 가능

def hello():
		return "hi"
		
x = hello   # 호출이 아닌, 함수 자체를 변수에 담음, **괄호 없음**
x()         # "()"를 붙여 호출

그 밖에 넘기는 인자 값

  1. **메서드(함수)**를 인자로 넘기기
def apply(func, value):
		return func(value)   # func를 double에 넣음

def double(x):
		return x * 2

apply(double, 5)
  1. lambda를 인자로 넘기기

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