Documente Academic
Documente Profesional
Documente Cultură
Introducere Python
GOOGLE
"PYTHON HAS BEEN AN IMPORTANT PART OF
GOOGLE SINCE THE BEGINNING, AND REMAINS SO
AS THE SYSTEM GROWS AND EVOLVES. TODAY
DOZENS OF GOOGLE ENGINEERS USE PYTHON, AND
WE'RE LOOKING FOR MORE PEOPLE WITH SKILLS N
THIS LANGUAGE."
PETER NORVIG, DIRECTOR OF SEARCH QUALITY,
GOOGLE, INC.
Python este un limbaj de programare puternic, dar uor de folosit dezvoltat de Guido
van Rossum, primul lansat peste doua decenii n urm, n 1991. Python faciliteaz o
scriere rapida i poate fi folosit pentru i aplicaii comerciale, fiind cross-platform
(platform independent). Acest lucru permite rularea aceluiai program pe diferite
sisteme de operare. Deci acelai script python poate fi rulat pe sisteme de operare
precum Windows, DOS, Macintosh sau Linux.
Dar de ce am folosi python i nu alt limbaj de programare?
Unul dintre motive este ca Python este uor de folosit. Provocarea unui limbaj de
programare este formata din sintaxa limbajului. Cu cat sintaxa este mai aproape de
codul main, cu att este mai greu de nvat i de a gsi rspunsuri cnd
comportamentul nu este tocmai cel scontat.
Spre exemplu, programarea n limbajul C presupune un efort imens pt. gsirea unei
soluii la un comportament defectuos. Limbaje precum C, C++, C# sau Java sunt
considerate limbaje de nivel nalt, mult mai aproape ca sintaxa de codul main dect
de limbajul uman.
Dar Python are reguli clare i simple fiind foarte aproape de limbajul uman, declaranduse pe buna dreptate ca Python este definit ca programare la viteza gandului.
Python Curriculum
Python Curriculum
Python este considerat un limbaj interpretabil, spre deosebire de C care este un limbaj
compilabil.
Un limbaj compilabil este un limbaj care trebuie s compileze fiierele sursa n fiiere
care sunt foarte aproape de limbajul main. Din aceasta cauza, C este un limbaj foarte
rapid. Din pcate timpul de compilare este cteodat foarte mare. Spre exemplu pentru
un Router Avaya, compilarea fiierelor sursa ntr-o imagine executabila pentru router
din gama de top, dup o operaiune de comentare a unei linii poate dura i trei ore...
In mod normal limbajele interpretate sunt de cele mai multe ori mai lente dect cele
compilate. Totui, precum Java, Python este si un limbaj byte-compiled ,rezultnd o
forma intermediara mai aproape de main. Acest aspect face ca pythonul s fie un
limbaj rapid, dar s permit pstrarea tuturor avantajelor unui limbaj interpretabil.
Mai jos am adugat cteva lucruri impresionante legate de Python, in speta despre
aplicabilitatea Python in diferite zone ale IT-ului:
Python Curriculum
Python Curriculum
Fig. 1
Instalare
Python este disponibil pe site-ul oficial dar i pe alte site-uri de profil:
http://www.python.org
Dup cum se poate vedea n fig. 1, Python se poate gsi sub diferite forme. La ora
actuala exista doua versiuni. Versiunea 2.7 i versiunea 3.2.
Python pune la dispoziie adugarea de funcionalitate n plus prin instalarea de
module, module ce se gsesc n comunitatea python. Scopul este de a uura munca
programatorului.
Din pcate versiunea 3.2 vine cu mici schimbri incompatibile cu 2.7. Toate modulele
adiionale au fost dezvoltate n versiuni mai vechi. Unele din aceste module au fost
traduse, altele nu. Sunt module care nu au avut nevoie de o mapare, n funcie de
Python Curriculum
coninutul modulului. Exista un script numit 2to3 ce traduce codul din python 2.x in
python 3.x
De asemenea, ar trebui s inem cont c la apariia acestui limbaj de programare, toate
mainile ofereau o arhitectura pe 32 de bii. Acum situaia s-a schimbat, mainile ce au
o arhitectura pe 32 de bii devenind o raritate. Din pcate, unele module au fost create
doar pentru 32 de bii, neexistnd o tranziie a acestora pe 64 de bii. Pentru o
compatibilitate cat mai buna recomandam Python 2.7 pe 32 bii. Puteti accesa acest link
pentru a descarca python.
Fig. 2
Python Curriculum
Fig. 3
Python Curriculum
Python Curriculum
Python Curriculum
Pentru a iei din acest mod de lucru trebuie s tastai exit() apoi s apsai enter.
Fig. 4
In cazul n care dorii s avei mai multe instalari de Python n sistemul de operare
Windows va trebui s modificai sau adugai n variabilele de sistem i o variabila
numita Path ce indica unde este directorul sursa Python.
Iat o procedura cum putei face asta n cazul n care compania a achiziionat un
ActivePython cu module speciale, adaptate la nevoile companiei.
1.
2.
3.
4.
5.
Mai jos se poate regsi n Figura 5 un exemplu de modificare a variabilei de cale pentru
ActivePython.
Python Curriculum
Fig. 5
Tipuri de fiiere
In directorul sursa Python (exemplu C:\Python27) se regsesc doua fiiere executabile:
python.exe Programul Python ce ruleaz n modul consola. Acest lucru
determin apariia unei console pentru orice rulare a unui script python.
De multe ori acest lucru este benefic, mai ales daca scriptul nu creeaz interfee
grafice.
pythonw.exe Programul Python ce ruleaz n modul non-consola. Are rolul de
evita ferestrele urate de tip DOS cnd nu lucram cu input/output-ul standard.
Acest executabil este des utilizat la construirea de interfee grafice sau la
construirea de daemon-uri/servicii.
Cnd Python a fost instalat, a fost asociat cu anumite tipuri de fiiere, ce vor fi vzute n
Windows ca fiind executabile. Prin urmare daca dam dublu click pe unul din aceste
fiiere din cadrul Explorer-ului va avea ca urmare rularea acelui fiier. Aceste fiiere au
extensia py, .pyw, .pyc, .pyo.
10
Python Curriculum
11
Python Curriculum
Fig. 6
12
Python Curriculum
Putem s realizam acelai lucruri ca i n consola, avnd n plus suport pentru debug i
un meniu grafic cu toate facilitile de care avem nevoie. Aceasta fereastra se mai
numete i Python Shell. La command promt ( >>> ) introdu urmtoarea secvena:
print "Salut Python! Salut PRIETENI ! "
Interpretorul ne returneaz <<Salut Python! Salut PRIETENI ! >>. Acesta este primul
program, Probabil ai ghicit ce realizeaz aceasta comanda, i anume va afisa pe
ecran mesajul :Salut Python! Salut PRIETENI !
Din punct de vedere al limbajului programatorilor aceasta linie se numete statement i
este o instruciune completa. Aceasta instruciune este formata din doua parti. Prima
parte print este o comanda. Spune interpretorului s fac o aciune i ce aciune.
Python este sensibil la diferenele de litere mari sau mici. Deci print e diferit de Print
sau PRINT. Se poate vedea n Fig. 7 diferena dintre ele.
Fig. 7
Putem vedea ca Python IDLE recunoate cu uurina cuvintele cheie cum ar fi
comenzile; prin urmare n timp ce le scriem sintaxa va schimba culoarea n portocaliu.
Expresiile cum ar fi acest ir de caractere, pe care noi l-am printat anterior, sunt afiate
n verde.
Output-ul returnat de interpretor se regsete n culoarea albastra. ncet i cu practica
codurile culorilor vor fi nvate fr s va dai seama.
13
Python Curriculum
Fig. 8
14
Python Curriculum
Fig. 9
15
Python Curriculum
Fig. 10
Exista un cod de buna conduita n ceea ce privete partea superioara a unui curs. Astfel
primele trei linii ar trebui s reprezinte informaii despre program, ce rol are acest fiier
n cadrul programului, cine a lucrat la acest fiier, versiune i data ultimei editri.
Aceasta este doar o recomandare. Interpretorul nu va returna eroare daca nu intalneste
primele trei linii comentate.
# Salut Prieteni
# Demonstreaza comanda print
# Ion Studentul - 12/09/13 vers 6
n cazul n care rulam prin dublu click acest program, putem vedea doar o fereastr
neagr pentru o fraciune de secund, i asta datorita faptului c interpretorul Python va
rula codul, apoi va iei.
Pentru a putea vedea i rularea acestui cod vom aduga la final o linie cu statut special.
Acesta linie se regsete n general n toate programele python de tip non grafic i are
scopul de a opri rularea pana la apsarea tastei enter.
raw_input("Apasa <Enter> pentru a iesi.")
n acest mod putem vedea ce a rulat pana la ultima linie. Dupa ce utilizatorul apasa
enter , programul se va incheia.
16
Python Curriculum
Alegei va rog varianta standard (Eclipse IDE for Java developers) pentru sistemul de
operare de 32 de bii.
Dezarhivai fiierul ntr-o locaie cunoscuta cum ar fi C:\Program Files (x86)\Eclipse
Deschidei executabilul eclipse.exe (putei s facei un shortcut ctre desktop pentru a fi
mai uor de apelat).
Dup deschiderea programului acesta cere o cale ctre workspace, directorul unde va
salva toata munca. De preferat s alegei o cale pe o partiie separat de cea a
sistemului de operare pt. a va putea salva munca n caz de virusare sau corupere a
sistemului de operare.
17
Python Curriculum
Fig. 11
Odat instalat avem un Eclipse pe care nu l-am personalizat pentru python. Pentru a
instala programele de care avem nevoie n python apelai din meniu: Help>Install new
software. n Fig. 12 se poate vedea fereastra ce se deschide apelnd aceasta opiune.
Fig. 12
18
Python Curriculum
In celec ce urmeaza vom instala o librrie PyDev care devine disponibila daca accesam
prin intermediul Eclipse site-ul:
http://pydev.org/updates
Pentru a aduga un site (numit repository), va trebui s dm click pe butonul de Add,
apoi s completm site-ul http://pydev.org/updates la sectiunea site i un nume
sugestiv. Va trebui s alegem acest repository nou format din lista (pick-list-ul) pe care
o avem la dispoziie in stanga butonului Add (triunghul cu varful in jos). n cmpul type
test here putem s scriem PyDev. Vom avea la dispoziie doua opiuni: PyDev for
Eclipse i PyDev MyLyn Integration. Le vom selecta pe amndou aa cum se poate
vedea i n Fig. 13.
Fig. 13
Vom da click pe Next urmnd instruciunile de instalare i acceptnd condiiile n cazul
n care suntem de acord. Atenie! n cadrul instalrii exista i o atenionare (warning) pe
19
Python Curriculum
Fig. 14
Dup restart, vom putea crea proiecte Python. Crearea unui proiect se poate face
apelnd din meniu: File> New>Project.
Vom alege s cream un proiect de tipul PyDev aa cum este prezentat i n Fig. 15
Fig. 15
20
Python Curriculum
Fig. 16
21
Python Curriculum
Observam ca butonul de Next sau Finish nu este disponibil, iar n partea superioara a
ferestrei vedem i motivul: Project interpreter not specified. Acest warning se refera la
verificarea i alegerea unei versiuni de python din cele instalate. Pentru a rezolva acest
impediment, va trebui s apelam link-ul albastru ce se gsete la mijlocul ferestrei:
Please configure an interpreter n the related preferences before proceeding
Alegem autoconfig i vom da click ok la cutarea i adugarea interpretorului gsit.
Dup setarea interpretorului python vedem ca este disponibil i butonul de Finish.
Apsnd butonul de Finish vom fi ntrebai daca perspectiva vizuala ar trebui schimbata
cu cea a proiectelor PyDev. Vom apsa pe butonul de Yes.
Fig. 17
Din acest moment Eclipse cu Python este disponibil. Putem crea fiiere sau directoare,
putem rula i face operaiuni de debug.
22
Python Curriculum
Rularea unui program se poate face dand click dreapta pe acel fisier apoi alegand Run
As >> Python Run. In partea dreapta unde regasim tab-ul Console vom putea vedea
rularea acelui program.
Fig. 18
23
Python Curriculum
Fig. 1
Cum ai putut observa putem crea string-uri folosind ghilimele simple sau duble.
Astfel n primul statement de print vedem ca am utilizat la nceput ghilimele simple, apoi
ghilimele duble, dup care iari ghilimele simple. Regula este simpl: dac ncep cu
ghilimele simple s termin cu ghilimele simple. n acest caz ghilimelele duble for fi
tratate ca un caracter normal. n cazul n care folosesc ghilimele duble la nceput i la
final, ghilimelele simple vor fi tratate ca un caracter normal.
Fig. 2
24
Python Curriculum
Aa cum se poate vedea i n Fig. 2 putei utiliza cate ghilimele dorii n interiorul irului
de caractere att timp cat sunt diferite de ghilimelele de la nceput i final.
Daca aceasta regul nu este respectat interpretorul va genera erori.
Revenind la programul Reamintire meci.py gsim sintaxa print \ pe rndul al 7-lea. n
cazul n care au o sintaxa care se ntinde pe mai multe caractere, depind 80
caractere (in general limea unui ecran) , va deveni greu de citit pt. dezvoltatorii python
care au rolul s menin codul. Cu caracterul slash \ putem obliga interpretorul s
ignore enter-ul de dup caracter i s interpreteze liniile ca o singura sintaxa.
Mai jos regsim un exemplu n care caracterul slash mparte un citat pe mai multe linii
n afara i n interiorul irului de caractere.
Fig. 3
25
Python Curriculum
Fig. 4
Fig. 5
26
Python Curriculum
Fig. 6
27
Python Curriculum
Se poate vedea ca daca n cadrul unui string punem backslash i space avand acelai
efect ca atunci cand avem doua backslash-uri unul dup altul. Printarea unui backslash
n mod direct nu se poate efectua deoarece ar anula importanta data de ghilimele(fie
simple fie duble). Un alt aspect important al backslash-ului este c poate s ne ajute la
afiarea diferitelor tipuri de ghilimele, anulnd nsemntatea ghilimelei i transforma
ghilimeaua intr-un caracter normal. Din aceast cauza vedem c interpretorul va returna
o eroare de sintaxa care e similara cu eroarea data de sintaxa:
print Lipseste ultima ghilimea.
Totui n cadrul programului Informatii parola uitata putem afia adresele de e-mail ca
fiind ncadrate n ghilimele fr ca interpretorul s returneze o eroare.
Secvena de evadare \n are scopul de a introduce enter linie noua (new line) dup
acest caracter. Mai jos avem o figur n care se poate regsi un echivalent al acestei
secvene de evadare.
Fig. 7
Aa cum ne indica i Fig. 7 putem s utilizam i alte metode de a afia o noua linie, dar
metoda secvenei de evadare /n este ce mai uor de identificat n cod.
In sectiunea urmatoare vom discuta despre repetarea i concatenarea sirurilor.
Vi s-a ntmplat s auzii anumite discuii despre educaie n cadrul colilor, cum ar fi
metodele de nvmnt ce folosesc pedeapsa i rsplata. Una din metodele preferate
de pedagogi este pedepsirea prin scrierea repetitiva a unui ir de caractere ce are o
nsemntate deosebita. Un exemplu ar fi: Promit s nu mai fur mncare la colegi.
Daca am folosi python i am dori s scriem un ir de caractere de mai multe ori am
putea utiliza chiar semnul nmulirii, operatie numita repetare. Dar n cazul n care am
28
Python Curriculum
dori s unim mai multe iruri de caractere? Soluia se regsete n programul de mai
jos:
Fig. 8
29
Python Curriculum
Fig. 9
Lucrul cu numere
In urmatorul program vedem cum putem s utilizam numerele i s efectuam operaii
numerice.
# Lucrul cu numere
# Demonstreaza lucrul cu numere
# Ion Studentul 1/11/13
print "\n\tTema matematica clasa a 4a\n"
print "Rezolva adunarea: 2+2"
print 2+2
print \
"""\nCat canteste o balena de 2000 kg care a nascut un pui de 100 kg."""
print "2000 - 100 = ",
print 2000 - 100
print "\nRezolva imnultirea 333*3? Raspunsul corect este", 333*3,"! "
print "24 / 6 = ",
print 24 / 6 ,
print "(impartire)\n"
print "107 % 4 = ",
print 107 % 4, "Aceasta operatie se numeste modulo!\n"
print \
"""Operatia matematica de mai jos aplica impartirea cu rest!"""
print "19 / 4 = ",
print 19 / 4
30
Python Curriculum
print "Gresit!"
print "Raspunusl corect este :",19.0 / 4
print "\nOperatie mateamatica complexa1: [(2+2)*3]/4 =" ,((2+2)*3)/4,"\n"
print "Operatie mateamatica complexa2: 2*2*2*2 =" ,2 ** 4,"\n"
raw_input("\n\nApasa <enter> pt a iesi.")
###########################################################################
Fig. 1
In Fig.1 se poate observa rularea programului Lucrul cu numere.
S vedem ce elemente noi avem n acest program.
In primul rnd Python poate realiza toate operaiile matematice elementare cu foarte
mare uurina. Acestea se pot apela n mod direct prin comenzi de genul :
print 2+2
Un alt element cheie n afiarea diferitelor tipuri de date este virgula ,. Virgula permite
afiarea diferitelor structuri de date sub aceeai sintaxa, cum ar fi numerele i irurile de
31
Python Curriculum
caractere. Cum acestea nu se pot concatena singura posibilitate ar fi virgula care face
ca interpretorul s ia fiecare element n parte din acea sintaxa i s apeleze separat
comanda print, apoi s uneasc outputul fiecrei comenzi, aa cum se poate vedea i
n Fig. 2.
Fig. 2
Virgula mai permite i unirea a mai multe linii pe o singura linie:
print "2000 - 100
print 2000 - 100
= ",
Cele doua sintaxe de mai sus vor fi afiate sub aceeai linie datorita virgulei ce se
regsete la finalul primei sintaxe. Se poate observa c comanda print exista si pe
urmatoarea linie. Prin urmare extinderea comenzii care era valid prin utilizarea
backslash-ului nu se aplic i aici datorita repetarii cuvantului cheie print. Deci aplicarea
celor doua linii de mai jos va genera eroare:
print "2000 - 100
print 2000 - 100
= "\
32
Python Curriculum
Fig. 3
Orice operaie matematic am realiza n python, unde unul din numere este float,
rezultatul va fi float.
In python exist i notiunea de numere complexe. Un exemplu de numr complex ar fi :
2+2i. Datorita faptului ca n America se folosete litera <<j>> n loc de <<i>> pentru a
identifica partea complexa a unui numr complex, aa vom regsi i noi numerele
complexe n python.
33
Python Curriculum
Fig. 4
In ceea ce priveste numele pozitive si cele negative, aceste se pot crea adaugand
minus in fata. Daca dorim sa extragem modulul unui numar atunci putem folosi functia
standard abs(). Functiile sunt acele operatii care permit intre paranteze o valoare (fara a
fi aplicate cu punct).
Fig. 5
Fig. 6
34
Python Curriculum
Un atribut este ceva ce poate fi dat cu punct la finalul unui tip de date. In cazul in care
un atribut are paranteze atunci se numeste metoda de manipulare. Spre exemplu,
conjugarea unui numar complex se obtine prin aplicarea metodei de manipulare
conjugate() si reprezinta schimbarea semnului partii imaginare.
Fig. 7
35
Python Curriculum
Fig. 1
Prin urmare, variabila s va stoca irul de caractere Stefan cel Mare . Apoi de fiecare
dat cnd apelam variabila s putem utiliza coninutul (ce stocheaza) variabilei s.
Adiional putem s folosim variabila s pentru a crea noi variabile cum ar fi crearea
variabilei <<st>> din exemplu de mai jos. Ce credei c o s afieze printarea variabilei
<<st>>?
Aa cum probabil ai intuit, am putea s redefinim variabila s pe care o putem utiliza cu
noua valoare. Prin urmare, interpretorul va returna un output ca n Fig. 1
Numele variabilei nu a fost ales ntmpltor. Daca stm s ne gndim la un program
mic aceasta variabila nu ar ncurca dezvoltatorul aplicaiei, dar n cazul n care
programul este mare devine suficient de dificil s ne amintim ce stocheaz variabila s,
neavnd un nume sugestiv. Dar ce nume ar putea lua o variabila ?
O variabil poate fi formata din litere, numere i underscore _ . Primul caracter din
numele unei variabile poate fi doar o liter sau underscore. Variabilele ce ncep cu
underscore au alta nsemntate fiind folosite n programarea orientat pe obiecte .
36
Python Curriculum
Fig. 2
Ceea ce nseamn ca numele variabilei ar trebui s nceap cu o liter, de obicei o
litera mic, literele mari sunt definite pentru funcii. Trebuie ales un nume sugestiv care
s indice ce conine variabila.
Spre exemplu variabila s ar trebui denumita stefanMare iar variabila st stefan_Sfant.
Prin aceste doua exemple vreau s subliniez ca exista doua stiluri de a crea variabile.
Primul stil este cel n care alternezi literele mici cu cele mari pentru a despari cuvintele,
iar cel de-al doilea stil se regsete prin separarea cuvintelor prin underscore. Fiecare
programator va trebui sa-si identifice propriul stil. E bine s existe o consistent a
variabilelor pentru a fi uor de citit codul.
In mod uzual o variabila globala (valida pentru tot programul i accesabila n fiecare
ramura a programului) va fi declarata la nceputul programului, imediat dup
comentariile ce descriu programul.
Fig. 3
In Fig. 3 se poate vedea cele doua stiluri de scriere a variabilelor. De asemenea
observam ca putem aplica la o variabila atribute sau metode de manipulare, aplicare
care va actiona asupra valorii stocate de variabila.
37
Python Curriculum
# Salut Personalizat
# Demonstreaza user input
# Ion Studentul 1/13/03
Nume_Utilizator = raw_input("Salut. Cum te numesti? \n\n")
print "\n",Nume_Utilizator,"?\n"
print "Salut
Fig. 1
38
Python Curriculum
Fig. 2
Din pacate adunarea celor doua variabile primulNr si, repspectiv, nrDoilea nu ne
returneaza 5, si asta datorita tipului de date sir de caractere. Prin urmare, trebuie sa
convertim aceste doua variabile pentru a putea lucra cu numere.
Pentru a converti un ir de caractere n numere va trebui s folosim una din funciile ce
se regsesc n sintaxele de mai jos:
Fig. 3
Sa discutam un pic despre sintaxele din IDLE ce se regsesc n Fig. 3.Primul pas este
s definim o variabila de tip ir de caractere. Aceasta poate fi convertita ntr-o valoare
39
Python Curriculum
Fig. 4
40