Ime modula - ★★ Fog Developer ★★

Novo

6/recent/ticker-posts

Ime modula

10.3 Ime modula 

Problem: Čekaj, do sada smo uvek radili sa modulima koji su već ugrađeni u standardnu biblioteku, a šta ćemo sa programima koje ja pišem? Kako ih mogu upotrebljavati u nekim drugim programima?
Odgovor: Evo, za momenat prelazimo na to. Ali, pre toga ću da ti malo „zagolicam“ maštu, a i da odgovorim na neke tvoje nedoumice.
Svaki modul ima svoje ime koje smo mu dodelili (bolje rečeno, pod kojim smo ga sačuvali). Naredbe unutar samog tog modula mogu znati ime svog modula (logika je da program zna svoje ime, kao što ti znaš kako se zoveš, tako i on zna kako se on zove, ma kako ga ti krstio). Ako se pitaš čemu to uopšte može da se koristi? Pa, ispostavilo se da to može biti veoma zgodan alat prilikom rada sa modulima – na primer, program može da sazna da li se pokrenuo samostalno ili je importovan u neki drugi program. Kao što sam ti rekao ranije, kada importujemo neki modul, njegov glavni blok se izvršava. To nam je polazna tačka da iskoristitmo osobinu programa da sazna svoje ime, te da napravimo modul koji će se ponašati na različit način, u zavisnosti da li želimo da se naš modul koristi kao samostalni program ili možda želimo da ga „uvozimo“ u neki drugi program.
Kako? Pa, bože moj, lako! Python imena modula čuva u  __name__ atributu modula.
Možda ti deluje konfuzno, pa da pokažemo praktično, sačuvaj kao ime.py:
#!/usr/bin/env python3 

''' 
Skripta koja pokazuje drugačije ponašanje modula. 
''' 

if __name__ == '__main__': 
    print('Ovako sam program.') 
else: 
    print('Ovako sam modul.')
Svaki modul u Python-u definiše svoje ime u atribut pod nazivom __name__. No, ukoliko je program samostalan, on sebi kaže da je „glavni dasa“ u igri, tj, nazove sebe  '__main__' , i to je osnov našeg daljeg rada. Mi proverimo da li je on „glavni“ i u zavisnosti od toga preduzimamo odgovarajuće akcije.
Ajde da ga pokrenemo samostalno:
./ime.py 
Ovako sam program. 
To smo i želeli... Ali hajde da ga importujemo u – interaktivni prompt (o, da, možemo i to, ali prethodno moramo da se „pomerimo“ u folder u kom smo ga sačuvali)!
cd ~/Desktop/Novi\ rad/Test\ Kodovi/10.Poglavlje/ 
python3 
Python 3.2.3 (default, Sep 25 2013, 18:25:56) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import ime 
Ovako sam modul. 
>>> 
Promenuo sam direktorijum, pokrenuo Python, i importovao modul. Dobio sam upravo ono što sam i želeo!
Obrati pažnju na način na koji sam ga importovao, naveo sam samo njegovo ime, bez ekstenzije py! Tako mi kreiramo i uvozimo sopstvene module! Prilikom kreiranja, sačuvamo ih kao i bilo koju drugu skriptu, prilikom importa je samo „pozovemo“ sa nazivom pod kojim smo je sačuvali (ali bez .py)! Lako, zar ne?
Možda se pitaš zbog čega je ovo dobro? Pa seti se kada sam te nagovorio da sačuvaš glavni deo programa u funkciju, koju si kasnije pozvao. Sada možeš da na kraju svake skripte staviš samo:
if __name__ == '__main__': 
    glavni_blok() 
Na ovaj način će tvoja skripta raditi i samostalno, ali i, istovremeno, možeš funkcije koje si definisao u njoj koristiti u bilo kom drugom programu koji budeš pisao, bez bojazni da ćeš slučajno pokrenuti sam modul! Super, zar ne?

10.2 Komande from i
import
Indeks 10.4 Izrada sopstvenih
modula

Постави коментар

0 Коментари