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) функции в классе программы, затем мы передали параметр, который она получает. красиво и просто