рдкрд╛рдпрдерди рдлрдВрдХреНрд╢рдВрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп

рд╣рд╛рдп, рд╣рдмреНрд░реЛрд╕реНрдХред рд╣рдордиреЗ рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ ред




рдкрд╛рдпрдерди рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИред рдкрд╛рдпрдерди рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рднрд╛рд╖рд╛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдлрд╝рдВрдХреНрд╢рдВрд╕ рдПрдХ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕реЗ рдХрд╛рд░реНрдп рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдпрд╛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ рдлрдВрдХреНрд╢рдирд▓рдмрд▓реНрд╕ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╡рд░реНрдгрд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд:

  • рдЖрдВрд╢рд┐рдХ
  • рдкреВрд░реНрдг рдЖрджреЗрд╢;
  • update_wrapperрдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ ред

рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдлрдВрдХреНрд╢рдВрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдореБрдЦреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ ред рдЖрдЗрдП рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭреЗрдВред

рдкрд╛рдпрдерди рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛


рдореЗрдВ functools рдореЙрдбреНрдпреВрд▓ , рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рд░реЛрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЖрдк рдПрдХ рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рдЪреБрдХрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рд▓реЗрдЦрди рдЬреЛрдбрд╝рдХрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдЖрдВрд╢рд┐рдХ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ рдирдП рдХрд╛рд░реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреЛ рднреА рдлреНрд░реАрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреАред рдЖрдВрд╢рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдорджрдж рд╕реЗ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреАрд╡рд░реНрдб рдФрд░ рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред

рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдмрдирд╛рдПрдВ ?


рдПрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рд░реЛрд╣, рдХрд╛ рдЙрдкрдпреЛрдЧ functoolspartial() рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ ред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:

partial(func, /, *args, ** kwargs)

рддреЛ рдЖрдк рдПрдХ рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝рд┐рдХреНрдХ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ , рдЗрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреАрд╡рд░реНрдб рдФрд░ рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рдлрдВрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред рд╢реЗрд╖ рддрд░реНрдХ * args рдФрд░ ** kwargs рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред

рдорд╛рди рд▓реАрдЬрд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджреЛ рдирдВрдмрд░ рд╣реИрдВ:

def multiply(x, y):
 
    return x * y

рдЕрдм рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдирдВрдмрд░ рдХреЛ рджреЛрдЧреБрдирд╛ рдпрд╛ рддрд┐рдЧреБрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

def multiply(x, y):
        return x * y
 
def doubleNum(x):
       return multiply(x, 2)
 
def tripleNum(x):
       return multiply(x, 3)

рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ 2-3 рд╣реЛрддреА рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ 100 рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╣реА рдХреЛрдб рдХреЛ рдЗрддрдиреА рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдп рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВ ред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реЗ рдЖрдВрд╢рд┐рдХ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред

from functools import partial
 
def multiply(x, y):
       return x * y
 
doubleNum = partial(multiply, 2)
   tripleNum = partial(multiply, 3)
 
Print(doubleNum(10))
 
Output: 20

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рдЪрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред X рдХреЗ рдмрдЬрд╛рдп 2 рд╣реЛрдВрдЧреЗ, рдФрд░ y рдХреЗ рдмрдЬрд╛рдп doubleNum (10) рдХрд╣рддреЗ рд╕рдордп 10 рд╣реЛрдВрдЧреЗ ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдСрд░реНрдбрд░ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреЛрдВ рдореЗрдВ, рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рдЖрджреЗрд╢ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

from functools import partial
def orderFunc(a,b,c,d):
      return a*4 + b*3 + c*2 + d
 
result = partial(orderFunc,5,6,7)
print(result(8))
 
Output: 60

рдкреВрд░реНрдг рдЖрджреЗрд╢


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди orderFunc()рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо a4 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ , b3 рд╕реЗ, c2 рд╕реЗ рдФрд░ dрдпреЛрдЧ рдХреЛ рдорд╛рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рд╣рдордиреЗ рдПрдХ рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ 5, 6 рдФрд░ 7. рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде result()рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ orderFunc()ред рдЕрдм рдорд╛рди 5, 6 рдФрд░ 7 рдЪрд░ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ a, bрдФрд░ cрддрджрдиреБрд╕рд╛рд░ред рдЪрд░ d8 рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ result()ред рдкрд░рд┐рдгрд╛рдо рд╣реИ (4 * 5 + 6 * 3 + 7 * 2 + 8) = 60ред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдЪрд░рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдХреНрд░рдо рдорд╛рдпрдиреЗ рд░рдЦреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдХреНрд░рдо рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рднреА рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдЪрд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрдерд┐рддрд┐рдЧрдд рддрд░реНрдХреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред

from functools import partial
def orderFunc(a,b,c,d):
       return a*4 + b*3 + c*2 + d
 
 result = partial(orderFunc,c=5,d=6)
print(result(8,4))
 
Output: 60

рдпрд╣рд╛рдВ рд╣рдордиреЗ рдЪрд░ рдХреЗ рд▓рд┐рдП рдорд╛рди 5 cрдФрд░ рдЪрд░ рдХреЗ рд▓рд┐рдП 6 рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ dред рдЪрд░ рдХреЗ рдмрдЬрд╛рдп a, bрдорд╛рди 8 рдФрд░ 4 рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдирддреАрдЬрддрди, рд╣рдореЗрдВ (8 * 4 + 4 * 3 + 5 * 2 + 6) = 60 рдорд┐рд▓рддрд╛ рд╣реИред

рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдп рдПрдХ рд▓реВрдк рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:

from functools import partial
 
def add(x,y):
      return x + y
 
add_partials = []
for i in range (1, 10):
      function = partial(add, i)
      add_partials.append(function)
      print('Sum of {} and 2 is {}'.format(i,add_partials[i-1](2)))
 
  
Output:
 
Sum of 1 and 2 is 3
Sum of 2 and 2 is 4
Sum of 3 and 2 is 5
Sum of 4 and 2 is 6
Sum of 5 and 2 is 7
Sum of 6 and 2 is 8
Sum of 7 and 2 is 9
Sum of 8 and 2 is 10
Sum of 9 and 2 is 11

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП 2 рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВрдЧреЗред рд╣рдо рд▓реВрдк рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рдХрдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 1 рд╕реЗ 10 рддрдХ рдХрд╛ рдЪрдХреНрд░ рд╣реИ рдФрд░ рдЗрд╕ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 2 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдореЗрдЯрд╛рдбрд╛рдЯрд╛


рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдп рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рд╡реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдореЗрдореЛрд░реА (рдореЗрдЯрд╛рдбреЗрдЯрд╛) рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╡реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

from functools import partial
 
def add(x,y):
      return x + y
 
# create a new function that multiplies by 2
result = partial(add,y=5)
print(result.func)
print(result.keywords)
 
Output:
<function add at 0x7f27b1aab620>
{'y': 5}

рдлрдВрдХ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХреЙрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕рдХрд╛ рдкрддрд╛ рдкрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ , рдФрд░ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рдХреЙрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреАрд╡рд░реНрдб рдкрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡-рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдлрдВрдХреНрд╢рдВрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдФрд░ рдЯреВрд▓ рдлрдВрдХреНрд╢рдВрд╕ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдлреАрдЪрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдордЭреЗрдВред

update_wrapper partial

Update_wrapper

def multiply(x, y):
 
    """Test string."""
 
    return x * y
 
 result = functools.partial(multiply, y=2)
 
 try:
 
    print ('Function Name:'+result.__name__)
 
except AttributeError:
 
    print('Function Name: __no name__')
 
 print ('Function Doc:'+result.__doc__)
 
 print('Updating wrapper:')
 
functools.update_wrapper(result, multiply)
 
 print ('Function Name:'+result.__name__)
 
print ('Function Doc:'+result.__doc__)
 
Output:
 
Function Name: __no name__
 
Function Doc:partial(func, *args, **keywords) - new function with partial application
 
    of the given arguments and keywords.
 
 
Updating wrapper:
 
Function Name: multiply
Function Doc: Test string.

рдЕрдм, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдирд╛рдо рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдерд╛ред рдЬреИрд╕реЗ рд╣реА рд╣рдордиреЗ рдирд╛рдо рдФрд░ рдбреЙрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ update_wrapper, рд╣рдордиреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдлрдВрдХреНрд╢рдирд▓рдмреБрд▓ рдХреЗ рд╕рд╛рде рд╣рдо рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рддрдиреА рдмрд╛рд░ рдЖрдк рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ , рдЙрддрдиреЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдЦреБрд▓реЗрдВрдЧреЗред рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!



рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░ рдЬрд╛рдУред



All Articles