12.07.2015 Views

Python

Python

Python

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

72 Moduli i paketiimport socket, os, regexModuli se mogu u£itati (importirati) koriste¢i alternativna imena, i to upotrebom poveznice as. Naprimjer:import os as sustavimport socket as mreza, thread as nitsustav.chdir("..")mreza.gethostname()Naredba from koristi se za speci£ne denicije unutar modula s trenuta£nim prostoru imena. Ovanaredba predstavlja pro²irenje naredbe import gdje se uz novo stvoreni prostora imena, stvara i referencana jedan ili vi²e objekata deniranih untar modula:from socket import gethostname# Stavlja gethostname u trenuta£ni prostor imenaprint gethostname()socket.gethostname()# Koristi se bez imena modula# Pogre²ka imena (NameError: socket)Naredba from takožer prihva¢a zarezom odvojena imena objekata. Zvjezdica (engl. asterisk , *) jesveobuhvatni (engl. wildcard) znak koji se koristi za u£itanje svih denicija u modulu, osim onih kojepo£inju s podvu£enom crtom (_). Na primjer:from socket import gethostname, socketfrom socket import *# Puni sve definicije u trenuta£ni prostor imenaModuli se mogu preciznije upravljati skupom imena koji se u£ita s from module import * definiranjemliste __all__. Na primjer:# module: primjer.py__all__ = [ 'K', 'primjer' ] # To su sva ona imena koja ¢e se uvu¢i sa *Nadalje, poveznica as moºe se koristiti za promjenu imena objekata koji se u£itaju s naredbomfrom. Na primjer:from socket import gethostname as ime_hostah = ime_hosta()Naredba import moºe se pojaviti na bilo kojem mjestu u programu. Mežutim, kôd u svakommodulu izvodi se samo jednom, bez obzira kako £esto se naredba import izvr²ava. Idu¢e importnaredbe jednostavno stvaraju referencu na prostor imena modula koji je stvoren s po£etnom importnaredbom. U varijabli sys.modules moºe se na¢i rje£nik koji sadrºi imena svih trenuta£no napunjenihmodula. On preslikavaa imena modula na njihove objekte. Sadrºaj rje£nika se koristi za odreživanje jeli import napunio svjeºu kopiju modula ili se isti modul poziva drugi put.Naredba from module import * moºe se koristiti samo na vrhu modula. Drugim rije£ima, nijedopu²teno koristiti ovaj oblik import naredbe unutar tijela funkcije, zbog njegove interakcije s pravilimafunkcijskog dosega (engl. scoping rules). Svaki modul denira variablu __name__ koja sadrºiime modula. Programi mogu ispitivati ovu varijablu i pritom odrediti modul u kojem se programskenaredbe izvr²avaju. Najvi²i (tzv. top-level) modul interpretera zove se __main__. Programi zadanina naredbenoj liniji ili une²eni interaktivno, uvijek se izvode unutar tog __main__ modula. Ponekadprogram moºe promijeniti ovo pona²anje, ovisno o tomu je li uvu£en iz modula ili je izveden u __main__okoli²u. To se moºe posti¢i na ovaj na£in:

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

Saved successfully!

Ooh no, something went wrong!