Python 에서 funtools 모듈 함수 분석
funtools 모듈 함수 개관
문법:
functools.cmp_to_key(func)
이 함 수 는 구식 비교 함 수 를 키워드 함수 로 바 꾸 는 데 쓰 인 다.구식 비교 함수:두 개의 인 자 를 받 아 비교 결 과 를 되 돌려 줍 니 다.반환 값 이 0 보다 작 으 면 전 자 는 후자 보다 작고 반환 값 이 0 보다 크 면 반대 이 며 반환 값 은 0 과 같 으 면 둘 이 같다.
키워드 함수:매개 변 수 를 받 아 비교 가능 한 대상 을 되 돌려 줍 니 다.예 를 들 어 sorted(),min(),max(),hepq.nlargest(),hepq.nsmallest(),itertools.groupby()는 모두 키워드 함수 로 사용 할 수 있다.
Python 3 에 서 는 구식 비교 함 수 를 지원 하지 않 는 곳 이 많 습 니 다.이 때 cmp 를 사용 할 수 있 습 니 다.to_key()를 변환 합 니 다.
예시:
sorted(iterable, key=cmp_to_key(cmp_func))
functools.total_ordering()문법:
functools.total_ordering(cls)
이것 은 클래스 장식 기로 서 클래스 의 비교 연산 을 자동 으로 실현 하 는 데 쓰 인 다.우 리 는 클래스 에서 만eq__() 방법 과 아래 방법 중 임의의lt__(), __le__(), __gt__(), __ge__(),그럼 totalordering()은 남 은 몇 가지 비교 연산 을 자동 으로 실현 할 수 있 습 니 다.
예시:
@total_ordering
class Student:
def __eq__(self, other):
return ((self.lastname.lower(), self.firstname.lower()) ==
(other.lastname.lower(), other.firstname.lower()))
def __lt__(self, other):
return ((self.lastname.lower(), self.firstname.lower()) <
(other.lastname.lower(), other.firstname.lower()))
functools.reduce()문법:
functools.reduce(function, iterable[, initializer])
이 함 수 는 Python 에 내 장 된 reduce()함수 와 같 으 며,주로 Python 3 을 호 환 하 는 코드 를 만 드 는 데 사 용 됩 니 다.functools.partial()
문법:
functools.partial(func[, *args][, **keywords])
이 함 수 는 partial 대상 을 되 돌려 줍 니 다.이 대상 을 호출 하 는 효 과 는 func 함 수 를 호출 하고 위치 매개 변수 args 와 키워드 매개 변수 keywords 를 입력 하 는 것 과 같 습 니 다.이 대상 을 호출 할 때 위치 매개 변 수 를 입력 하면 이 매개 변 수 는 args 에 추 가 됩 니 다.키워드 인자 가 들 어 오 면 키워드 에 추 가 됩 니 다.partial()함수 의 등가 실현 은 대체적으로 다음 과 같다.
def partial(func, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
return func(*(args + fargs), **newkeywords)
newfunc.func = func
newfunc.args = args
newfunc.keywords = keywords
return newfunc
partial()함 수 는 주로'동결'함수 의 일부 매개 변수 에 사용 되 며,매개 변수 가 더 적 고 간단 한 함수 대상 을 되 돌려 줍 니 다.예시:
>>> from functools import partial
>>> basetwo = partial(int, base=2)
>>> basetwo.__doc__ = 'Convert base 2 string to an int.'
>>> basetwo('10010')
18
functools.update_wrapper()문법:
functools.update_wrapper(wrapper, wrapped[, assigned][, updated])
이 함 수 는 포장 함수(wrapper)를 업데이트 하여 원 함수 처럼 보이 게 합 니 다.선택 할 수 있 는 매개 변 수 는 원 그룹 입 니 다.assigned 원 그룹 은 원 함수 의 값 을 직접 사용 하여 교체 할 속성 을 지정 합 니 다.updated 원 그룹 은 원 함수 와 대조 하여 업데이트 할 속성 을 지정 합 니 다.이 두 매개 변수의 기본 값 은 각각 모듈 등급 의 상수 입 니 다:WRAPPERASSIGNMENTS 와 WRAPPERUPDATES。전 자 는 포장 함수 에 대한 를 지정 하 였 습 니 다.name__, __module__, __doc__ 속성 은 직접 값 을 부여 하고 후 자 는 포장 함수 에 대한 를 지정 합 니 다.dict__ 속성 업데이트.
이 함 수 는 주로 장식 기 함수 의 정의 에 사용 되 며 포장 함수 앞 에 있 습 니 다.포장 함 수 를 업데이트 하지 않 으 면 장 식 된 함수 가 가지 고 있 는 메타 정 보 는 원 함수 의 메타 정보 가 아니 라 포장 함수 의 메타 정보 로 변 합 니 다.
functools.wraps()
문법:
functools.wraps(wrapped[, assigned][, updated])
wraps()는 update 를 간소화 하 였 습 니 다.wrapper()함수 호출.그것 은 partial(updatewrapper, wrapped=wrapped, assigned, updated=updated)。
예시:
>>> from functools import wraps
>>> def my_decorator(f):
... @wraps(f)
... def wrapper(*args, **kwds):
... print 'Calling decorated function'
... return f(*args, **kwds)
... return wrapper
>>> @my_decorator
... def example():
... """Docstring"""
... print 'Called example function'
>>> example()
Calling decorated function
Called example function
>>> example.__name__
'example'
>>> example.__doc__
'Docstring'
이 함 수 를 사용 하지 않 으 면 예제 의 함수 이름 은 wrapper 가 되 고 원 함수 example()의 설명 문서(docstring)를 잃 어 버 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.