28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

fib = fibo.fib<br />

>>> fib(500)<br />

1 1 2 3 5 8 13 21 34 55 89 144 233 377<br />

6.1 Mai multe despre module<br />

Un modul poate conţine atât instrucţiuni executabile cât şi definiţii de funcţii. Instrucţiunile sunt menite să realizeze<br />

iniţializarea modulului şi se execută o singură dată, atunci când modulul este importat 1 .<br />

Fiecare modul are propria sa tabelă de simboluri care este folosită de funcţiile definite în modul ca o tabelă de<br />

simboluri globală.<br />

Cu toate astea, autorul unui modul se poate folosi de variabilele globale, fără a-şi face griji pentru eventuale<br />

coliziuni cu variabilele globale ale mediului în care modulul va fi importat. Pe de altă parte dacă aveţi neapărat<br />

nevoie puteţi modifica direct variabilele globale ale unui modul, folosind aceeaşi convenţie ca la apelarea funcţiilor<br />

unui modul: modul.variabilă.<br />

Modulele pot importa alte module. Este indicat ca instrucţiunile import pot fi plasate la începutul programului<br />

şi, dar nu este obligatoriu.<br />

Există o metodă de a încărca definiţiile unui anumit modul direct în tabela de simboluri globală a modulului care<br />

importă:<br />

>>> from fibo import fib, fib2<br />

>>> fib(500)<br />

1 1 2 3 5 8 13 21 34 55 89 144 233 377<br />

În exemplul de mai sus numele modulului nu a fost introdus în tabela de simboluri locală (fibo nu este definit).<br />

Pentru a încărca toate definiţiile modulului direct în tabela locală folosiţi sintaxa :<br />

>>> from fibo import *<br />

>>> fib(500)<br />

1 1 2 3 5 8 13 21 34 55 89 144 233 377<br />

Acum în tabela locală au fost încărcate toate numele de variabile şi funcţii din modul, mai putin cele care încep<br />

cu caracterul ”_”.<br />

6.1.1 Calea în care sunt căutate modulele<br />

Atunci când un modul numit ‘xxx’ este importat, interpretorul caută un fişier numit ‘xxx.py’ în directorul curent,<br />

şi în toate directoarele specificate în variabila de stare PYTHONPATH. Aceasta are aceeaşi sintaxa ca şi variabila<br />

de sistem PATH, care este o listă de directoare. Dacă variabila PYTHONPATH nu este definită, sau modulul<br />

nu este gasit in directoarele din lista, atunci va fi căutat în directorul implicit de instalare, de obicei, in UNIX,<br />

‘/usr/local/lib/python’.<br />

6.1.2 Fişiere <strong>Python</strong> “compilate”<br />

Un important aport de viteză la pornirea programelor care încarcă o mulţime de module standard este adus de<br />

următorul comportament al <strong>Python</strong>-ului: dacă în directorul unde este găsit fişierul ‘xxx.py’ se mai află şi ‘xxx.pyc’,<br />

se presupune că acest ultim fişier conţine o variantă compilată a modulului şi este încărcat în loc de ‘xxx.py’.<br />

1 De fapt declaraţiile de funcţii sunt tot ’instrucţiuni’ care sunt ’executate’ : execuţia inseamnă încărcarea numelui funcţiei în tabela de<br />

simboluri globale a modulului.<br />

38 Capitolul 6. Module

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!