2진수 문자열을 10진수로 변환하기 (partial)

Kwon, Hyojin·2021년 4월 18일
0

Python

목록 보기
1/1
post-thumbnail

Python 라이브러리 functoolspartial 함수를 이용해 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)

  • 호출될 때 위치 인수 args 및 키워드 인수 keywords로 호출된 func처럼 동작하는 새로운 partial object를 반환
  • 호출에 더 많은 인수가 제공되면 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
profile
파이썬 웹 백엔드 개발자

0개의 댓글