|
Este normal ca programatorul să nu scrie de nenumărate ori o aceeaşi secvenţă de instrucţiuni într-un program. Dacă el simte nevoia, va scrie o funcţie cu acea secvenţă care se repetă şi o va apela ori de câte ori are nevoie în program. De regulă, programatorii sunt specializaţi în a scrie programe pentru soluţionarea problemelor dintr-o clasă, probleme care sunt asemănătoare. Înseamnă, că de la program la program, el simte nevoia să scrie secvenţe pe care le-a scris în alte programe. De aceea, secvenţele care se repetă într-un program le pune într-o funcţie şi dacă aceleaşi secvenţe se repetă la mai multe programe, funcţiile se definesc grupate într-un fişier, numit bibliotecă. Fişierul bibliotecă se include în acele programe care au nevoie de funcţiile scrise în el, funcţii care se apelează ca şi cum s-ar găsi în fişierul unde as află. programul pe care-l scrie programatorul. Punem funcţii create de noi într-o bibliotecă dacă şi numai dacă suntem siguri 100% că: - am testat funcţia de o mie de ori, - funcţia este mai bună decât ceea ce există deja, - este suficient de generală să fie reutilizată, - respectă cerinţe nescrise de stil de programare, - avem undeva informaţii clare despre ceea ce face, - suntem convinşi că apelând funcţii de acolo facem bine, - am găsit metoda de a creşte productivitatea noastră. În exemplul dat, am creat o bibliotecă cu funcţii pe care le-am scris într-un fişier, ca orice alt program PYTHON, dar care conţine numai definiri de funcţii. Numele fişierului trebuie să aibă cumva legătură cu problemele pe care le rezolvă funcţiile definite în el, adică să fie sugestiv, pentru a nu ne încurca atunci când importăm biblioteca.
Fişierul cu funcţiile care alcătuiesc biblioteca este:
#
# Biblioteca de functii vector
#
def aduna_1(x):
suma1=0
for i in x:
suma1 += i
return suma1
def aduna_2(x):
suma2=0
for i in x:
suma2 += i*i
return suma2
def aduna_3(x):
suma3=0
for i in x:
suma3 += i*i*i
return suma3
def numara(x):
poz = 0
neg = 0
nul = 0
for i in x:
if i == 0:
nul += 1
if i > 0:
poz += 1
if i < 0:
neg += 1
return poz, nul, neg
#
# Aici am testat funcțiile
#
LIST = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print('suma elemente =', aduna_1(LIST))
print('suma patrate elemente =', aduna_2(LIST))
print('suma cuburi elemente =', aduna_3(LIST))
print('numara elemente pozitive, nule, negative =', numara(LIST))
|
|
Programul care foloseşte funcţiile definite în bibliotecă este:
#
# Import functii de biblioteca
#
from PYTHONBiblioteca import aduna_1, aduna_2, aduna_3, numara
LIST = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print('suma elemente =', aduna_1(LIST))
print('suma patrate elemente =', aduna_2(LIST))
print('suma cuburi elemente =', aduna_3(LIST))
print('numara elemente pozitive, nule, negative =', numara(LIST))
|
|
Rezultatele afişate după apelarea funcţiilor din bibliotecă sunt:
suma elemente = 55
suma patrate elemente = 385
suma cuburi elemente = 3025
numara elemente pozitive, nule, negative = (10, 0, 0)
suma elemente = 55
suma patrate elemente = 385
suma cuburi elemente = 3025
numara elemente pozitive, nule, negative = (10, 0, 0)
Pe Internet sunt multe exemple de folosire a bibliotecilor în programe PYTHON. Venind din programarea în FORTRAN şi C++, pentru mine a fost lejeră folosirea şi crearea bibliotecilor pentru că am înţeles rostul lor în creşterea productivităţii mele prin reutilizare de secvenţe deja existente.
Mediile care implementează limbajul PYTHON au foarte multe biblioteci. De aceea este foarte bine ca înainte de a ne apuca să scriem programe PYTHON să ştim cam ce biblioteci se potrivesc problemei pe care dorim s-o rezolvăm, pentru a nu mai scrie noi secvenţe de prelucrare pentru ceea ce se rezolvă apelând o funcţie de bibliotecă. Cei ce ne analizează programele urmăresc şi risipa de muncă vie datorată scrierii de secvenţe pentru că nu ştim. că există funcţii de bibliotecă scrise tocmai pentru a face prelucrările pe care din ignoranţă le facem cu instrucţiuni proprii, nu prin apel de funcţii din biblioteci.
(afişat azi 15 aprilie 2022 ora 14,00)
|