Sunteți pe pagina 1din 11

Functii

Functii Integrate
Funcțiile nu sunt complet noi: le-am folosit deja. Functia type() de exemplu, este o
funcție care returnează tipul unei valori. Dar ce este o funcție?

Pe scurt, o funcție este o bucată de cod reutilizabil, menită să rezolve o anumită


sarcină. Putem apela funcții în loc să scriem cod.

Să presupunem că avem o listă care conține doar înălțimile familiei - fam și că vrem să
obținem valoarea maximă din această listă.

În loc să scriem propriul cod Python care trece prin listă și găsește cea mai mare
valoare, putem utiliza și funcția Python max().

Aceasta este una dintre funcțiile încorporate în Python, la fel ca type(). Pur și simplu
folosim max(). Rezultatul este 1.89, cel mai mare număr din listă.
Evident, putem asigna aceasta valoare unei variabile - tallest ca în exemplul de mai jos:
O altă funcție este round(x, y). Avem nevoie de doua input-uri: în primul rând, un număr
pe care vrem să-l rotunjim - x și, în al doilea rând, precizia cu care rotunjim - y, mai
exact, câte cifre păstrăm după virgulă.

Să presupunem că rotunjim numarul 1.68 la o zecimală. Primul input este 1.68, al doilea
este 1. Separăm input-urile cu o virgulă.

Este posibil să apelăm funcția round() și cu un singur input. De data aceasta, Python
vede ca am specificat un singur și alege automat să rotunjească numărul la cel mai
apropiat număr întreg.

Pentru a înțelege de ce funcționează ambele abordări, să deschidem documentația.


Putem utiliza încă o funcție, help(). Se pare că round() necesită două input-uri.
În Python, aceste input-uri, numite și argumente, au nume: number și ndigits. Când
apelăm funcția round() cu aceste două input-uri, Python potrivește input-urile cu
argumentele: number este setat la 1.68 și ndigits este setat la 1.

Apoi, funcția round() își face calculele cu number și ndigits ca și cum ar fi variabile
Python într-un script. Nu știm exact ce cod execută Python. Ceea ce este important,
totuși, este că funcția are output, și anume numărul 1.68 rotunjit la 1 zecimală.

Dacă apelăm funcția round() cu un singur input, Python încearcă din nou să potrivească
input-urile cu argumentele. Totuși, nu există niciun input care să se potrivească cu
argumentul ndigits.

Din fericire, funcția round() știe cum să se ocupe de asta. Când ndigits nu este
specificat, funcția se rotunjește pur și simplu la cel mai apropiat număr întreg și
returnează acel număr întreg. De aceea s-a returnat numărul 2.

Cu alte cuvinte, ndigits este un argument opțional. Acest lucru ne spune că putem apela
round() în ambele forme:
Găsirea funcțiilor
Până acum, avem o idee despre cum să utilizăm max() și round(), dar cum putem afla
dacă o funcție precum round() există în Python în primul rând? Ei bine, acesta este
ceva ce vom învăța cu timpul.

Ori de câte ori efectuam o sarcină destul de standard în Python, putem fi destul de
siguri că există deja o funcție care poate face acest lucru. În acest caz, cu siguranță ar
trebui să o folosim! O căutare rapidă pe internet și găsim funcția necesara cu exemple
de utilizare.

Functii imbricate/integrate/incorporate (built-in)


Funcțiile încorporate sunt numai o parte din Python. Știm deja despre funcții precum
max(), pentru a obține maximul unei liste, len(), pentru a obține lungimea unei liste sau
a unui șir și așa mai departe.

Dar cum rămâne cu alte lucruri de bază, cum ar fi obținerea indexului unui anumit
element din listă sau inversarea unei liste? Putem căuta funcții încorporate care fac
acest lucru, dar nu le vom găsi.
Metode aplicate pe obiecte
În exercițiile anterioare, am creat o mulțime de variabile. Printre alte tipuri de date
Python, am creat string-uri, float și liste. Fiecare dintre aceste valori sau structuri de
date sunt așa-numitele obiecte Python.

Acest șir este un obiect, acest float este un obiect, iar această listă este și ea un obiect.
Aceste obiecte au un tip specific, pe care îl știm deja:

string, float și list reprezintă valorile declarate, cum ar fi „liz”, 1.73 și o listă. Dar, pe
lângă aceasta, obiectele Python vin și cu o mulțime de așa-numite „metode”.

Ne putem gândi la metode ca la funcții care „aparțin” obiectelor Python. Un obiect


Python de tip șir are metode precum capitalize() si replace(), dar și obiectele de tip float
și list au metode specifice.
Metode de liste
Să presupunem că dorim să obținem indexul șirului “mom” din lista fam. fam este un
obiect Python de tip listă și are o metodă numită .index(). Pentru a apela metoda,
utilizăm notația cu punct.

Singura intrare este stringul „mom”, elementul pentru care dorim să obținem indexul.
Python returnează 4, care este într-adevăr indexul string-ului „mom”. Am folosit metoda
.index() pentru lista fam, iar rezultatul a fost 4.

În mod similar, putem folosi metoda .count() pentru a număra de câte ori apare 1.73 în
listă. Rezultatul este 1, pentru că numai “liz” are 1.73 înălțime. Dar listele nu sunt
singurele obiecte Python care au metode asociate.
Metode de string-uri
Obiectele Python au metode specifice asociate.

Sa luăm de exemplu, variabila sister, care reprezintă un string. Putem apela metoda
.capitalize() pe sister, fără niciun input. Se returnează un string în care prima literă este
scrisă cu majuscula.

Ce se întâmplă dacă dorim să înlocuim unele părți ale șirului cu alte părți? Nici o
problema. Doar apelam metoda .replace() pe sister, cu două inputuri. Primul input, „z”
este înlocuit cu „sa”.

Pentru a fi absolut clar: în Python, totul este un obiect și fiecare obiect are metode
specifice asociate.
În funcție de tipul obiectului, listă, string, float, oricare ar fi, metodele disponibile sunt
diferite. Un obiect string precum sister are o metodă de înlocuire, dar o listă precum fam
nu are, așa cum putem vedea din această eroare:

Obiectele de diferite tipuri pot avea metode cu același nume, exemplu fiind metoda
.index(). Metoda este disponibilă atât pentru șiruri, cât și pentru liste.

Daca apelam metoda pe string, obținem indexul literei (caracterului) din string. Dacă îl
apelăm pe o listă, obținem indexul elementului din listă.

Aceasta înseamnă că, în funcție de tipul obiectului, metodele se comportă diferit.


Unele metode pot schimba obiectele. Să luăm din nou lista fam și să apelăm metoda
.append() pe ea. Ca input, trecem un string pe care vrem să-l adăugăm în listă.

Python nu generează un output, dar dacă verificăm din nou lista fam, vedem că a fost
extinsă cu stringul „me”. Să facem asta din nou, de data aceasta pentru a adăuga o
înălțime în listă. Din nou, lista fam a fost extinsă.

Este destul de interesant, deoarece putem scrie cod foarte concis pentru a actualiza
structurile de date din mers, dar poate fi și destul de periculos.

Unele metode nu schimbă obiectele pe care sunt apelate, în timp ce altele o fac, așa că
trebuie să fim atenți.
Sumar
Să privim în ansamblu și să recapitulăm cele învățate. Există funcții Python, cum ar fi
type(), max() și round().

Există și metode, care sunt funcții specifice obiectelor Python. În funcție de tipul
obiectului Python cu care avem de-a face, putem folosi diferite metode care se
comportă diferit.

Putem apela metode pe obiecte cu notația punct. Sunt multe de spus despre obiecte și
metode Python și despre modul în care Python funcționează.

S-ar putea să vă placă și