뭔지는 모르는데 이런게 있는지 궁금합니다. 이미 정의된 함수에 추가적으로 변수를 추가하기.

조회수 148회
from shapely.geometry import Point

def somefunc(lst):
    return [Point(x) for x in lst]

if __name__ == "__main__":
    xy = [(x, x) for x in range(1, 10)]
    print(somefunc(xy))
이 상태에서 somefunc에 count변수를 추가할 일이 있어서,
def somefunc(lst, count=False):
    zz = [Point(x) for x in lst]
    if count:
        return [(id,x) for x in enumerate(zz)]
    return zz
이렇게 바꾸긴 했는데요.

somefunc를 건드리지 않고 count를 지원하는 방법이 있을까요?

감사합니다.

  • 데코레이터를 활용해보세요. 정영훈 2022.10.30 02:01

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    아래 참고하세요.

    import functools
    def insert_count(count):
        def decorator(func):
            @functools.wraps(func)
            def _wrap(*args, **kwargs):
                zz = func(*args, **kwargs)
                if count:
                    return [(id,x) for x in enumerate(zz)]
                return zz
            return _wrap
        return decorator
    
    from shapely.geometry import Point
    
    @insert_count(True)
    def somefunc(lst):
        return [Point(x) for x in lst]
    
    result = somefunc(zip(range(1, 11), range(1, 11)))
    
    • 정영훈님 감사합니다. anitisiana 2022.10.30 13:07

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.