Python предоставляет множество мощных и эффективных модулей, включая модуль functools. в сегодняшней статье мы поговорим об этой концепции. Я стараюсь сделать это легко и просто.

что такое модуль functools, ну, это модуль, который предоставляет функции, облегчающие работу с «функциями более высокого порядка»

каковы функции высшего порядка! когда мы передаем функцию как переменную в параметры другой функции, она называется функцией высшего порядка.

def f(x):
    return x*x ;
def f2(x):
    print(f(x)) ; 
f2(10) ; 

«f(x)» — наша функция высшего порядка. Теперь хватит об этом, давайте поговорим о нашем модуле functools.

Модуль functools содержит два класса:

  • частичный
  • неполный класс

Начнем с частичного!

частичный класс используется для передачи определенных аргументов в функцию, синтаксис такой:

var = partial(function,param=variable) 

очень, очень просто и эффективно, теперь пришло время увидеть это на примере.

import numpy as np ;
import functools as ft ;
def f_x(p1,p2):
    x = np.arange(0,p1,p2);
    for i in x :
        return i ; 
obj = partial(f_x,p2=2) ;
i = input('num : ') ;
print(obj(i)) ; 

как вы можете видеть с помощью partial , мы объявили значение второго параметра (шаги), а затем мы получаем ввод от нашего пользователя и передаем его для «первого параметра», и это очень удобно для нашего кода.

Частичный метод:

это как частичный класс, но его нельзя вызывать, это дескриптор метода

давайте посмотрим на пример:

class program :
      def __init__(self):
          self.name = "ali" ; 
      def change_name(self,name):
          self.name = name ; 
      change = partialmethod(change_name,name="fred"); 
x = program() ; 
x.change() ; 
print("my name is ",x.name)

как видите, мы изменили имя с помощью частичного метода следующим образом:

мы передали нашу функцию, которая меняет имя (change_name) функции в классе программы, затем мы передали параметр, который она получает. красиво и просто