출처 : 윤성우의 열혈 파이썬 : 중급
06. 객체처럼 다뤄지는 함수 그리고 람다
파이썬에서는 함수도 객체
def func1(n):
return n
def func2():
print("hello")
type(func1) # <class 'function1'>
type(func2) # <class 'function2'>
def say1():
print('hello')
def say2():
print('hi-')
def caller(fct):
fct()
caller(say1) # 매개변수에 함수를 전달
caller(say2)
def fct_fac(n):
def exp(x):
return x ** n
return exp
f2 = fct_fac(2)
f3 = fct_fac(3)
f2(4) # 16
f3(4) # 64
- 함수를 정의하면 파이썬은 그 함수의 내용을 기반으로 function 클래스의 객체를 생성
- '매개변수에 함수를 전달할 수 있음'
- 함수 내에서 함수를 만들어 이를 반환할 수 있다
- 이는 함수도 객체이기 때문이다
람다
def show(s):
print(s)
ref = show
ref('hi~') # hi~
ref = lambda s: print(s)
ref('oh~') # oh~
- 이름 없는 함수
- lambda args: expression
f1 = lambda n1, n2: n1 + n2
f1(3, 4) # 7
f2 = lambda s: len(s)
f2('simple') # 6
f3 = lambda : print('yes~')
f3() # yes~
def fct_fac(n):
return lambda x: x ** n
f2 = fct_fac(2)
f3 = fct_fac(3)
f2(4) # 16
f3(4) # 64
'프로그래머 > Python' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] 09. generator 함수 (0) | 2020.12.15 |
---|---|
[윤성우의 열혈 파이썬 중급편] 07. map & filter (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 05. Iterable 객체와 Iterator 객체 (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 04. list comprehension (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 03. 깊은 복사와 얕은 복사 (0) | 2020.12.15 |