Python/2.7 information

함수 리팩토링 관련 모듈들.

qkqhxla1 2016. 6. 23. 13:44

파이썬코리아에 어떤 분이 글을 올리셨다.

눈팅하다 나라면 어떻게 할까 생각해봤는데 아래 댓글에도 있었지만 *args, **kwargs등을 이용해서 어떻게든 만들겠다.. 라고 구상만 하고 있었는데 이게 진짜 되는지 여러가지 방법론이 올라왔다.

당연히 나중에 쓸 일이 있을지 모르지만 쓰게되면 엄청나게 유용하게 보이기에 정리함.


1. multimethods 모듈이 있다고 한다. https://pypi.python.org/pypi/multimethods/

(아무리 찾아봐도 어떻게 쓰는지 잘 모르겠다.;)


2. 파이썬 3.4버전 이상에서는 https://docs.python.org/3/library/functools.html 요걸 사용할수 있다고 한다. 아래 코드는 예제.

from functools import singledispatch
@singledispatch
def fun(arg, verbose=False):
     if verbose:
          print("Let me just say,", end=" ")
     print(arg)

@fun.register(int)
def _(arg, verbose=False):
     if verbose:
          print("Strength in numbers, eh?", end=" ")
     print(arg)

@fun.register(list)
def _(arg, verbose=False):
     if verbose:
          print("Enumerate this:")
     for i, elem in enumerate(arg):
          print(i, elem)

fun(10)
fun(['rara','roro'])

3. 2번의 내용을 2버전에서 쓸수 있게 모듈 형태로 만든게 https://pypi.python.org/pypi/singledispatch#downloads 요거다.

모듈 설치후 저 코드를 그대로 가져오되 import라인만 from singledispatch import singledispatch 로 바꿔주고, print함수 끝의 end=" "같은것만 지워주면된다. 잘 작동하는걸 확인했다.

'Python > 2.7 information' 카테고리의 다른 글

in operator 탐구.  (0) 2016.06.30
Iterator, Generator, Decorator  (0) 2016.06.24
raw 소켓 파악하기 2.  (0) 2016.03.07
raw 소켓 파악하기 1.  (0) 2016.03.07
파이썬 내부구조 이해하기. 2.x  (0) 2016.02.27