рдЖрд▓рд╕реА рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдкреЗрдбрд╝реЛрдВ рдХреА рдбрд┐рд╕реНрдХ рдХреИрд╢рд┐рдВрдЧ

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


рдЗрд╕ рдкрд╛рда рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рд╣рд┐рддреНрдпрдХрд╛рд░ рдХреЛ рдЪрд╛рд╣рд┐рдП:


  1. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдЧрдгрдирд╛ рд╕рд╣реЗрдЬреЗрдВред
  2. рдЧрдгрдирд╛ рдкреЗрдбрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВред
  3. рдордзреНрдпрдо рд░реВрдк рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рд▓реЗрдВред

рдЖрд▓рд╕реА рд╡реГрдХреНрд╖


рд╕рдВрдХрд▓реНрдкрдирд╛


рдХреНрд░рдо рдореЗрдВ:


  1. рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдЧрдгрдирд╛ рд╕рд╣реЗрдЬреЗрдВ:
    рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рд╣рдо рдПрдХ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджрд┐рди рдореЗрдВ рдХрдИ рдмрд╛рд░ рджрд╕рд┐рдпреЛрдВ-рд╕реИрдХрдбрд╝реЛрдВ рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрд╕реА рд╕рдордп рдХреЛ рдкреБрди: рдЧрдгрдирд╛ рдХреНрдпреЛрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛред рдбрд┐рд╕реНрдХ рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди ... рд╣рдореЗрдВ рдЗрд╕рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЪрд╛рдирдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреБрд░рд╛рдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдкрд░ рд╡рд╕реНрддреБ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред
  2. рдЧрдгрдирд╛ рдкреЗрдбрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЯреНрд░реИрдХ:
    рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреЗред рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд▓реЛрдб рдХреА рдЧрдИ рд╡рд╕реНрддреБ рд╡реИрдз рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╢реБрджреНрдз рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗрд╡рд▓ рддрд░реНрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреИрд╢ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд╛рдВрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдпрджрд┐ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╡рд╕реНрддреБ рджреВрд╕рд░реЗ рдХреИрд╢реНрдб (рдЖрд▓рд╕реА) рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдЪреЗрди рдиреЛрдбреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рдкреВрд░реА рдЧрдгрдирд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдХреНрд╕рд░, рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
  3. рдордзреНрдпрдо рд░реВрдк рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рд▓реЗрдВ:
    рдпрд╣ рдмрд╛рдд рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрд▓рд╕реА рдЧрдгрдирд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рддрдерд╛рдХрдерд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИред рдмрджрд▓рд╛рд╡ рдиреНрдпреВрдирддрдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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


рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рдорд╛рдзрд╛рди рдФрд░ рдХрд╛рдо рдХрд╛ рддрдВрддреНрд░


рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ
import evalcache import hashlib import shelve lazy = evalcache.Lazy(cache = shelve.open(".cache"), algo = hashlib.sha256) @lazy def summ(a,b,c): return a + b + c @lazy def sqr(a): return a * a a = 1 b = sqr(2) c = lazy(3) lazyresult = summ(a, b, c) result = lazyresult.unlazy() print(lazyresult) #f8a871cd8c85850f6bf2ec96b223de2d302dd7f38c749867c2851deb0b24315c print(result) #8 

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


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


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


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


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдЖрд▓рд╕реА рд╡рд╕реНрддреБ рдЕрдиреНрдп рдЖрд▓рд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдлреИрд▓рд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ (рдпрд╛ рдорд╛рддрд╛-рдкрд┐рддрд╛) рдХреЗ рд╣реИрд╢ рдХреЛ рд╡рдВрд╢рдЬ рдХреА рд╣реИрд╢ рдХреБрдВрдЬреА рдореЗрдВ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрд▓рд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдХреЙрд▓ ( __call__ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓реЗрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╕рдордп, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдИ рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдмреА рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЧ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ lazyresult рдХреЗ рд▓рд┐рдП, рддрд░реНрдХреЛрдВ рдХреЗ рдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрд▓рд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╣реИрд╢ рдХреАрдЬрд╝ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдгрдирд╛ (рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рдХреИрд╢ рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛) рдХреЗрд╡рд▓ рд▓рд╛рдЗрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: result = lazyresult.unlazy()


рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рд▓реЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдереА, рддреЛ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдмрд┐рд▓реНрдб рдЯреНрд░реА рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рд╡реГрдХреНрд╖ рджреГрд╢реНрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг
 evalcache.print_tree(lazyresult) ... generic: <function summ at 0x7f1cfc0d5048> args: 1 generic: <function sqr at 0x7f1cf9af29d8> args: 2 ------- 3 ------- 

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


рдЖрд▓рд╕реА рд╡рд╕реНрддреБрдПрдБ рдПрдХ рд╡реГрдХреНрд╖ рдореЗрдВ рдкрдВрдХреНрддрд┐рдмрджреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдпрджрд┐ рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рдЕрд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдХрд┐ рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рд╡реИрдз рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБ рдмрд╕ рд▓реЛрдб рд╣реЛрдЧреАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдирд╣реАрдВ рдЦреАрдВрдЪреЗрдЧрд╛ред


рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ


рдКрдкрд░ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдерд╛ рдЬреЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╢рдХреНрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреЗ рдереЛрдбрд╝рд╛ рдХрд░реАрдм (рд╕рд╣рд╛рдиреБрднреВрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреБрдХреНрдд)ред


рдЙрджрд╛рд╣рд░рдг рд╕рд┐рдореНрдкреА рдФрд░ рд╕реБрдиреНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░
 #!/usr/bin/python3.5 from sympy import * import numpy as np import math import evalcache lazy = evalcache.Lazy(evalcache.DirCache(".evalcache"), diag = True) pj1, psi, y0, gamma, gr= symbols("pj1 psi y0 gamma gr") ###################### Construct sympy expression ##################### F = 2500 xright = 625 re = 625 y0 = 1650 gr = 2*math.pi / 360 #gamma = pi / 2 xj1q = xright + re * (1 - cos(psi)) yj1q = (xright + re) * tan(psi) - re * sin(psi) #+ y0 pj1 = sqrt(xj1q**2 + yj1q**2) pj2 = pj1 + y0 * sin(psi) zj2 = (pj2**2)/4/F asqrt = sqrt(pj2**2 + 4*F**2) xp2 = 2*F / asqrt yp2 = pj2 / asqrt xp3 = yp2 yp3 = -xp2 xmpsi = 1295 gmpsi = 106 * gr aepsi = 600 bepsi = 125 b = 0.5*(1-cos(pi * gamma / gmpsi)) p1 = ( (gamma * xmpsi / gmpsi * xp2) * (1-b) + (aepsi * xp2 * sin(gamma) + bepsi * yp2 * (1-cos(gamma)))*b + pj1 ) ####################################################################### #First lazy node. Simplify is long operation. #Sympy has very good representations for expressions print("Expression:", repr(p1)) print() p1 = lazy(simplify)(p1) ######################################################################################### ## Really don't need to lazify fast operations Na = 200 angles = [t * 2 * math.pi / 360 / Na * 106 for t in range(0,Na+1)] N = int(200) a = (np.arange(0,N+1) - N/2) * 90/360*2*math.pi/N ######################################################################################### @lazy def genarray(angles, a, p1): points = [] for i in range(0, len(angles)): ex = p1.subs(gamma, angles[i]) func = lambdify(psi, ex, 'numpy') # returns a numpy-ready function rads = func(a) xs = rads*np.cos(a) ys = rads*np.sin(a) arr = np.column_stack((xs,ys,[i*2]*len(xs))) points.append(arr) return points #Second lazy node. arr = genarray(angles, a, p1).unlazy() print("\nResult list:", arr.__class__, len(arr)) 

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


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


рдпрд╣ рд╕рдм рдХреНрдпрд╛ рд╣реИ?


evalcache zencad рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрдбрд┐рдХ рд╣реИ, рдЬреЛ рдУрдкрдирдХреИрдб рдХреЗ рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдФрд░ рд╢реЛрд╖рдг рдХрд░рддреА рд╣реИред рдЬрд╛рд▓реА рдЙрдиреНрдореБрдЦ рдУрдкреЗрдХреИрдб рдХреЗ рд╡рд┐рдкрд░реАрдд, рдУрдкреЗрдХрдирдХреЗрдб рдХреЛрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдЬрд╝реЗрдВрдХрд╛рдб рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВред


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


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдХрд╛рдо рдерд╛ред рдЬрд╝реЗрдВрдХрдб рдореЗрдВ, рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдЖрд▓рд╕реА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЙрджрд╛рд╣рд░рдг:


рдореЙрдбрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
 #!/usr/bin/python3 #coding: utf-8 from zencad import * xgate = 14.65 ygate = 11.6 zgate = 11 t = (xgate - 11.7) / 2 ear_r = 8.6/2 ear_w = 7.8 - ear_r ear_z = 3 hx_h = 2.0 bx = xgate + ear_w by = 2 bz = ear_z+1 gate = ( box(xgate, ygate, t).up(zgate - t) + box(t, ygate, zgate) + box(t, ygate, zgate).right(xgate - t) ) gate = gate.fillet(1, [5, 23,29, 76]) gate = gate.left(xgate/2) ear = (box(ear_w, ear_r * 2, ear_z) + cylinder(r = ear_r, h = ear_z).forw(ear_r).right(ear_w)).right(xgate/2 - t) hx = linear_extrude( ngon(r = 2.5, n = 6).rotateZ(deg(90)).forw(ear_r), hx_h ).up(ear_z - hx_h).right(xgate/2 -t + ear_w) m = ( gate + ear + ear.mirrorYZ() - hx - hx.mirrorYZ() - box(xgate-2*t, ygate, zgate, center = True).forw(ygate/2) - box(bx, by, bz, center = True).forw(ear_r).up(bz/2) - cylinder(r = 2/2, h = 100, center = True).right(xgate/2-t+ear_w).forw(ear_r) - cylinder(r = 2/2, h = 100, center = True).left(xgate/2-t+ear_w).forw(ear_r) ) display(m) show() 

рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЙрдбрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

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


рднрд╛рд░реА рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдореЙрдбрд▓

рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЗрд╕ рдмрд╛рд░ рд╣рдо рдЦреБрдж рдХреЛ рддрд╕реНрд╡реАрд░реЛрдВ рддрдХ рд╕реАрдорд┐рдд рд░рдЦреЗрдВрдЧреЗ:

рдПрдХ рдереНрд░реЗрдбреЗрдб рд╕рддрд╣ рдХреА рдЧрдгрдирд╛ рдПрдХ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдРрд╕рд╛ рдмреЛрд▓реНрдЯ рджрд╕ рд╕реЗрдХрдВрдб рдХреЗ рдЖрджреЗрд╢ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ... рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбрд▓ рдХрд╛ рд╕рдВрдкрд╛рджрди рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реИред


рдФрд░ рдЕрдм рдпрд╣ рдПрдХ рдЪрдорддреНрдХрд╛рд░ рд╣реИ:

рдереНрд░реЗрдбреЗрдб рд╕рддрд╣реЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдХрд╛рд░реНрдп рд╣реИред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдореВрд▓реНрдп, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрдгрд┐рдд рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреЛрдИ рдирд╣реАрдВред рдЧрдгрдирд╛ рдореЗрдВ рдбреЗрдврд╝ рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрди рджреЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдпреЛрдЧреНрдп рд▓рдХреНрд╖реНрдпред


рд╕рдорд╕реНрдпрд╛рдУрдВ


рдХреИрд╢ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреИрд╢ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдЭреВрдареЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЧрд▓рдд рдирдХрд╛рд░рд╛рддреНрдордХ рддреНрд░реБрдЯрд┐рдпрд╛рдБ


рдЧрд▓рдд рдирдХрд╛рд░рд╛рддреНрдордХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЧрдгрдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреИрд╢ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдкрд╛рдпрд╛ред
рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ evalcache рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИрд╢ рдХреБрдВрдЬреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреИрд╢ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ evalcache рдХреБрдВрдЬреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ __repr__ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ __repr__ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рддреНрд░реБрдЯрд┐ рддрдм рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд▓реАрдЬ рдХреА рдЬрд╛ рд░рд╣реА рдХрдХреНрд╖рд╛ рдорд╛рдирдХ object.__repr__ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ object.__repr__ , рдЬреЛ рд╢реБрд░реВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рдмрджрд▓рддреА рд░рд╣рддреА рд╣реИред рдпрд╛, рдпрджрд┐ рдУрд╡рд░рд░рд╛рдЗрдб __repr__ , рдХрд┐рд╕реА рддрд░рд╣ рдмрджрд▓рддреЗ рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рд╣реАрди рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдкрддрд╛)ред


рдЦрд░рд╛рдм:


 class A: def __init__(self): self.i = 3 A_lazy = lazy(A) A_lazy().unlazy() #        -  __repr__. 

рдЕрдЪреНрдЫрд╛:


 class A: def __init__(self): self.i = 3 def __repr__(self): return "A({})".format(self.i) A_lazy = lazy(A) A_lazy().unlazy() #     . 

рдЧрд▓рдд рдирдХрд╛рд░рд╛рддреНрдордХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ рдХрд┐ рд▓реЗрди рджреЗрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред


рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рддреНрд░реБрдЯрд┐рдпреЛрдВ


рдпрд╣ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрдгрдирд╛ рдХреА рдЕрдВрддрд┐рдо рд╡рд╕реНрддреБ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ:
рдпрд╣ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


  • рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп:
    рдХреИрд╢ рдореЗрдВ рд╣реИрд╢ рдХреА рдЯрдХреНрдХрд░ рд╣реБрдИред Sha256 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП 1157920892373161954235709850086879078532699846656405640394584847913129639936 рд╕рдВрднрд╛рд╡рд┐рдд рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реНрдерд╛рди рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдПрдХ рдЯрдХрд░рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирдЧрдгреНрдп рд╣реИред
  • рд╕рдВрднрд╛рд╡рд┐рдд:
    рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ (рдпрд╛ рдПрдХ рдЕрдзрд┐рдХрддрд╛ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

 class A: def __init__(self): self.i = 3 def __repr__(self): return "({})".format(self.i) class B: def __init__(self): self.i = 3 def __repr__(self): return "({})".format(self.i) A_lazy = lazy(A) B_lazy = lazy(B) a = A_lazy().unlazy() b = B_lazy().unlazy() #.     B,        A. 

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


рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдРрд╕реЗ рдХрдИ рд▓реЗрди-рджреЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдЧрдгрдирд╛ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рдирддреЗ рд╣реИрдВред


рдХрдИ рдбрд┐рд╕реНрдХ рдХреИрд╢рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред


рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрд╛ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдкреЗрдбрд╝ рдкрд░ рдХреИрд╢рд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рддреЛ рдХреГрдкрдпрд╛, рдЕрд╕реБрд░рдХреНрд╖рд┐рддред


рд╕рдВрджрд░реНрдн:


рдЧрд┐рдердм рдкрд░рд┐рдпреЛрдЬрдирд╛
рдкрд┐рдкреА рдкрд░рд┐рдпреЛрдЬрдирд╛

Source: https://habr.com/ru/post/hi422937/


All Articles