Rezumat: Acest curs poate părea neobișnuit pentru cineva care utilizează limbajele de programare imperative (cum ar fi Pascal, C ++ sau Java). Cu toate acestea, abordarea funcțională oferă programator instrumente puternice, permițându-vă să creați nu numai mai compact, dar, de asemenea, codul de mai robust. Nu este necesar să se scrie cu Python program de pur funcțional, dar trebuie să învețe să vadă în cazul în care elementele de programare funcțională va aduce un efect maxim.
Funcțiile sunt abstracțiuni. în care detaliile punerii în aplicare a unor acțiuni sunt ascunse în spatele unui nume separat. Un set bine scris de caracteristici vă permite să le folosească mai multe ori. Python standard Biblioteca conține un set de caracteristici gata făcute și funcțională, dintre care multe sunt suficient de flexibile pentru a lucra cu o gamă largă de date de intrare. Chiar dacă o anumită bucată de cod nu este utilizat de mai multe ori, dar datele de intrare și de ieșire este destul de auto-conținută, acesta poate fi izolat în condiții de siguranță într-o funcție separată.
Acest curs se concentrează mai mult pe considerente practice, mai degrabă decât pe teoria programării funcționale. Cu toate acestea, în cazul în care este necesar, vor fi folosite și explicate în termenii relevanți.
În continuare vor fi discutate în detaliu și descrierea utilizării funcțiilor în Python. recursivitate. și retur funcția de transfer ca parametri, secvențele de prelucrare și iteratori. și, de asemenea, un astfel de lucru ca un generator. Se va demonstra că în Python funcții sunt obiecte (și, prin urmare, pot fi transmise ca parametri și returnat ca urmare a efectuării funcțiilor). În plus, ne vom concentra asupra modului de implementare a unor mecanisme de programare funcționale în Python nu are suport direct pentru sintaxa, dar utilizate pe scară largă în limbaje de programare funcționale.
Ce este programarea funcțională?
Programarea funcțională - un stil de programare, folosind doar compoziția funcțiilor. Cu alte cuvinte, acest lucru este de programare termeni, mai degrabă decât comenzi peremptorii.
După cum sa menționat de către Devid Mertts (David Mertz), în articolul său despre programarea funcțională în Python. "Programarea funcțională - programare în limbaje funcționale (.. LISP ML, Ocaml, Haskell)", principalele atribute sunt:
- „Având o funcții de primă clasă“ (funcție, împreună cu alte obiecte pot fi transmise în funcție).
- Recursivitatea este structura de control de bază în program.
- Listă de procesare (secvențe).
- Interzicerea efectelor secundare în funcții care înseamnă în primul rând, nu de atribuire (în limbile funcționale „pure“)
- Interzicerea operatori, accentul se pune pe expresia. În schimb, operatorii din întregul program este ideal - o expresie cu definiții însoțitoare.
- Întrebarea cheie este ce să calculeze, dar nu și cum.
- Utilizarea funcțiilor de ordin superior (funcțiile funcțiilor funcțiilor).
program funcțional
În matematică funcție afișează o pluralitate de obiecte (seturi de definiții a funcției) la alta (set de valori). funcții matematice (numite pure) „mecanic“ calculat în mod unic rezultat potrivit argumentelor. Funcția Clean nu ar trebui să fie stocate în sine, orice date între cele două apeluri. Ele pot fi gândit cutii negre, doar că ei fac care sunt cunoscute, dar nu contează cum.
Programul într-un stil funcțional sunt concepute ca o compoziție de funcții. Funcțiile sunt înțelese aproape la fel de mult ca în matematică: ele prezintă obiecte de la alte obiecte. În programare, funcția de „curat“ - idealul nu este întotdeauna atins în practică. Practic funcții utile au de obicei un efect secundar. menține starea între apeluri sau să modificați starea altor obiecte. De exemplu, fără efecte secundare este imposibil de imaginat funcția de intrare-ieșire. De fapt, sunt folosite pentru o astfel de funcție de dragul acestor „efecte“. Mai mult decât atât, funcțiile matematice pot fi cu ușurință lucra cu obiecte care necesită o cantitate infinită de informații (de exemplu, numere reale). În general, programul de calculator poate efectua doar calcule aproximative.
Apropo, operația binară „+“, „-“, „*“, „/“, care este scris în termeni care sunt funcții „matematice“ a două argumente - operanzi. Ele sunt folosite atât de des încât o sintaxă limbaj de programare are o scurtă intrare pentru ei. Modulul permite operatorului să reprezinte aceste operațiuni într-un stil funcțional: