Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Functools — Python의 호출 가능한 객체에 대한 고차 함수 및 작업

<시간/>

파이썬에서 함수는 고차라고 합니다. 이는 다른 함수에 인수로 전달될 수 있고/또는 다른 함수도 반환할 수 있음을 의미합니다. functools 모듈은 이러한 고차 함수를 위한 중요한 유틸리티를 제공합니다.

부분() 함수

이 함수는 호출 가능한 '부분' 객체를 반환합니다. 객체 자체는 함수처럼 작동합니다. partial() 함수는 다른 함수를 인수로 받고 함수 인수의 일부를 고정하여 서명이 간소화된 새 객체를 만듭니다.

내장 int() 함수는 숫자를 십진 정수로 변환합니다. int()의 기본 서명은

입니다.
int(x, base = 10)

partial() 함수는 기본 인수가 2인 int() 함수처럼 작동하는 콜러블을 만드는 데 사용할 수 있습니다.

>>> import functools
>>> binint = functools.partial(int, base = 2)
>>> binint('1001')
9

다음 예제에서 사용자 정의 함수 myfunction()은 원래 함수의 인수 중 하나에 기본값을 설정하여 부분 함수에 대한 인수로 사용됩니다.

>>> def myfunction(a,b):
return a*b

>>> partfunction = functools.partial(myfunction,b = 10)
>>> partfunction(10)
100

부분 메서드()

이 함수는 직접 호출할 수 있는 것이 아니라 메서드 정의로 사용하도록 설계된 것을 제외하고는 부분적으로 작동하는 새로운 부분 메서드 설명자를 반환합니다.

Cmp_to_key() 함수

Python 2.x에는 두 객체를 비교하기 위한 cmp() 함수가 있습니다. Python 3에서는 더 이상 사용하지 않습니다. functools 모듈은 사용자 정의 클래스의 객체 비교를 수행할 수 있는 cmp_to_key() 함수를 제공합니다.

from functools import cmp_to_key

class test:
def __init__(self,x):
self.x = x
def __str__(self):
return str(self.x)
def cmpr( a,b):
if a.x> = b.x: return True
if a.x<b.x: return False
mykey = cmp_to_key(cmpr)

reduce() 함수

reduce() 함수는 함수와 반복 가능한 두 개의 인수를 받습니다. 그러나 단일 값을 반환합니다. 인수 함수는 목록에서 왼쪽에서 오른쪽으로 두 개의 인수를 누적하여 적용됩니다. 첫 번째 호출에서 함수의 결과가 첫 번째 인수가 되고 목록의 세 번째 항목이 두 번째 항목이 됩니다. 목록이 소진될 때까지 이 작업을 반복합니다.

아래 예에서 mult() 함수는 두 숫자의 곱을 반환하도록 정의되어 있습니다. 이 함수는 1에서 10 사이의 숫자 범위와 함께 reduce() 함수에서 사용됩니다. 출력은 10의 계승 값입니다.

import functools
def mult(x,y):
return x*y

num = functools.reduce(mult, range(1,11))
print ('factorial of 10: ',num)

출력

factorial of 10: 3628800