"Python - модули, пакеты, классы, экземпляры" - читать интересную книгу автора (Бройтман Олег)б Ї а ¬Ґва ¬Ё!
Python Ї®§ў®«пҐв ЇҐаҐ®ЇаҐ¤Ґ«Ёвм ўбҐ ЁдЁЄблҐ ®ЇҐа жЁЁ, ЇаЁзҐ¬ ®в¤Ґ«м® ¤«п «Ґў®Ј® Ё Їа ў®Ј® аЈг¬Ґв ўла ¦ҐЁп. Ќ ЇаЁ¬Ґа, Ґб«Ё a - нЄ§Ґ¬Ї«па Є« бб A, Ё b - нЄ§Ґ¬Ї«па Є« бб B, в® ¤«п ўлзЁб«ҐЁп ўла ¦ҐЁп a + b ЏЁв® Ўг¤Ґв б з « ЁбЄ вм ¬Ґв®¤ __add__ ў Є« бᥠA, Ґб«Ё Ґ ©¤Ґв - в® ¬Ґв®¤ __radd__ ў Є« бᥠB ( Ґб«Ё Ё в ¬ Ґ ©¤Ґв - ў®§Ўг¤Ёв ЁбЄ«о票Ґ TypeError). Њ®ЈЁҐ Їа®Ја ¬¬Ёбвл, ®б®ЎҐ® ЇЁб ўиЁҐ C++, Ў®пвбп Ё Ґ «оЎпв ¬®¦Ґб⢥®Ј® б«Ґ¤®ў Ёп. Ђўв®ал п§лЄ Java ў®®ЎйҐ Ґ ўЄ«озЁ«Ё ¬®¦Ґб⢥®Ґ б«Ґ¤®ў ЁҐ ў п§лЄ. ‘®ўҐа襮 Їа б®! Python Ї®§ў®«пҐв ЁбЇ®«м§®ў вм ¬®¦Ґб⢥®Ґ б«Ґ¤®ў ЁҐ ўҐбм¬ гбЇҐи® Ё 㤮Ў®. Њ®¦Ґб⢥®Ґ б«Ґ¤®ў ЁҐ ®Ў«ҐЈз Ґв ЇҐаҐЁбЇ®«м§®ў ЁҐ Є®¤ (code reuse) ў¬Ґбв® copy/paste-Їа®Ја ¬¬Ёа®ў Ёп, зв® ®зҐм ў ¦® Ё ¤«п нд䥪⨢®бвЁ, Ё ¤«п зЁв Ґ¬®бвЁ Їа®Ја ¬¬, Ё ¤«п ®в« ¤ЄЁ. — бв® Їа®Ја ¬¬Ёбвл ЏЁв®Ґ ᮧ¤ ов Є« бб б Ї®¬®ймо ¬®¦Ґб⢥®Ј® б«Ґ¤®ў Ёп Ё§ ҐбЄ®«мЄЁе бўп§ ле ¬Ґ¦¤г б®Ў®© "ЄЁаЇЁзЁЄ®ў", б«®ў® Ё§ Є®бвагЄв®а . ’ ЄЁҐ "ЄЁаЇЁзЁЄЁ" ў ЋЋ-Їа®Ја ¬¬Ёа®ў ЁЁ §лў овбп MixIn-Є« бб ¬Ё. Џ®¤а®Ўго бв вмо Їа® Їа®Ја ¬¬Ёа®ў ЁҐ б Ї®¬®ймо MixIn-Є« бб®ў ¬®¦® Їа®зҐбвм ў Linux Journal …йҐ ®¤Ё бЇ®б®Ў ЁбЇ®«м§®ў Ёп Є« бб®ў (в®зҐҐ, нЄ§Ґ¬Ї«па®ў), Ґ бўп§ л© ҐЇ®б।б⢥® б ЋЋ-Їа®Ја ¬¬Ёа®ў ЁҐ¬ - ЁбЇ®«м§®ў ЁҐ Їа®бва бвў Ё¬Ґ, Є®в®а®Ґ ЇаҐ¤®бв ў«пҐв ®ЎкҐЄв. ђ бᬮваЁ¬ б«Ґ¤гойго Їа®Ў«Ґ¬г. ‚ ¬ ¤® Їа®©вЁ жЁЄ«®¬ Ї® бЇЁбЄг, б®еа пп ¬Ґ¦¤г ЁвҐа жЁп¬Ё жЁЄ« ҐЄ®в®аго Ёд®а¬ жЁо. ќв® ¬®¦® ᤥ« вм жЁЄ«®¬ for, ЁЄ ЄЁе Їа®Ў«Ґ¬. Ђ ¬®¦® ў®бЇ®«м§®ў вмбп ў®§¬®¦®бвп¬Ё дгЄжЁ® «м®Ј® Їа®Ја ¬¬Ёа®ў Ёп, Є®в®алҐ Ґбвм ў ЏЁв®Ґ - дгЄжЁп¬Ё map, filter, reduce Ё ⮬㠯®¤®Ў®Ґ. ќвЁ дгЄжЁЁ вॡго ќв® нд䥪⨢ҐҐ, 祬 жЁЄ« for (нвЁ дгЄжЁЁ-в® ЇЁб л C), ® ў®§ЁЄ Ґв Їа®Ў«Ґ¬ б еа ҐЁҐ¬ б®бв®пЁп ¬Ґ¦¤г ЁвҐа жЁп¬Ё. ”гЄжЁп, Є®в®аго ўл§лў Ґв map ¬®¦Ґв еа Ёвм б®бв®пЁҐ в®«мЄ® ў Ј«®Ў «мле ЇҐаҐ¬Ґле. „«п Їа®бвле Їа®Ја ¬¬ нв® ўЇ®«Ґ ЇаЁҐ¬«Ґ¬®. Ќ® ў®в, бЄ ¦Ґ¬, б ¬®Ј®Ї®в®зл¬Ё Їа®Ја ¬¬ ¬Ё Ўг¤гв Їа®Ў«Ґ¬л - Ґ®Ўе®¤Ё¬® § ЇЁа вм Ё бЁеа®Ё§Ёа®ў вм ¤®бвгЇ Є Ј«®Ў «мл¬ ЇҐаҐ¬Ґл¬. „ Ё ў®®ЎйҐ Є Ј«®Ў «мл¬ ЇҐаҐ¬Ґл¬ ¤® ®Ўа й вмбп в®«мЄ® ЇаЁ Єа ©Ґ© 㦤Ґ. ‚®в вгв Ї®¬®йм ЇаЁе®¤Ёв ¤®Ї®«ЁвҐ«м®Ґ Їа®бва бвў® Ё¬Ґ, бгйҐбвўго饥 ў нЄ§Ґ¬Ї«пॠЄ« бб . ‘®§¤ ¤Ё¬ Є« бб class Process: def __init__(self): self.foo = 0 def __call__(self, v): if self.foo ъ 100: raise OverflowError self.foo += v return self.foo ‘®§¤ ¤Ё¬ нЄ§Ґ¬Ї«па нв®Ј® Є« бб : p = Process(), Ё ЇҐаҐ¤ ¤Ё¬ нв®в ®ЎкҐЄв ў map ў¬Ґбв® дгЄжЁЁ: result = map(p, sequence). ”гЄжЁп map, ЁзҐЈ® Ґ Ї®¤®§аҐў п, Ўг¤Ґв ўл§лў вм ЇҐаҐ¤ л© Ґ© ®ЎкҐЄв Є Є дгЄжЁо б ®¤Ё¬ Ї а ¬Ґв஬. ЌЁЄ ЄЁе Їа®Ў«Ґ¬ - ¬л в Є ®ЇЁб «Ё Є« бб, зв® ҐЈ® нЄ§Ґ¬Ї«пал ¬®¦® ўл§лў вм, Ё Ё¬Ґ® б ®¤Ё¬ Ї а ¬Ґв஬! € ®в ЁвҐа жЁЁ Є ЁвҐа жЁЁ ®ЎкҐЄв p б®еа пҐв Ґ®Ўе®¤Ё¬®Ґ б®бв®пЁҐ. |
|
|