Python 라이브러리 functools
의 partial
함수를 이용해 2진수를 10진수로 아주 간단히 변환할 수 있습니다.
(공식 문서에 functools.partial
예제로 나옵니다..)
from functools import partial
basetwo = partial(int, base=2) # int(x, base=10) -> integer
print(basetwo('1101'))
# 13
functools.partial(func, /, *args, **keywords)
lambda
vs partial
(코드 출처: https://wikidocs.net/13973)
lambda
는 평가될 때 생성, 즉 함수가 실제로 실행될 때 값을 얻어옴 (동적)
funcs = []
for i in range(5):
l = lambda: print(i)
funcs.append(l)
for f in funcs:
f()
# 4
# 4
# 4
# 4
# 4
partial
은 생성될 때 평가, 즉 함수가 생성될 때 바로 값을 얻어옴 (정적)
from functools import partial
funcs = []
for i in range(5):
p = partial(print, i)
funcs.append(p)
for f in funcs:
f()
# 0
# 1
# 2
# 3
# 4