12.07.2015 Views

Python

Python

Python

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.

8.2. Paketi 75tiff.pyjpeg.pyNaredba import koristi se za punjenje modula iz paketa na nekoliko na£ina:import Graphics.Primitive.ispunaOvo u£itava podmodul Graphics.Primitive.ispuna. Sadrºaj tog modula mora se eksplicitnoimenovati, kao na primjer: Graphics.Primitive.ispune.crtaj(img,x,y,color).Drugi na£in:from Graphics.Primitive import ispunau£itava podmodul ispuna i £ini ga raspoloºivim i bez paketnog preksa, na primjer: ispuna.crtaj(img,x,y,color).Tre¢i na£in:from Graphics.Primitive.ispuna import crtajOva naredba u£itava podmodul ispuna i £ini crtaj funkciju direktno primjenljivom, primjerice:crtaj(img,x,y,color). Kad god se neki dio paketa u£ita, importira, kôd u datoteci __init__.py setad izvr²i. U najmanjem slu£aju ova datoteka moºe biti i prazna, ali takožer moºe sadrºavati kôd kojimse izvode inicijalizacije koje su speci£ne za paket. Sve nažene datoteke u __init__.py za vrijemeu£itavanja, automatski se izvr²avaju. Tako ¢e naredba import Graphics.Primitive.ispuna izvr²iti__init__.py datoteke i u Graphics imeniku i u Primitive imeniku.Jedan poseban problem s paketima je obradba ovakve naredbe:from Graphics.Primitive import *šeljeni cilj ove naredbe je u£itati sve module pridruºene u paketu s trenuta£nim prostorom imena.Mežutim, s obzirom da dogovori oko imena datoteka (pogotovo u smislu razlikovanja velikih i malihslova) variraju od sustava do sustava, <strong>Python</strong> ne moºe to£no odrediti koje module to£no treba uklju£iti.Kao rezultat, ova naredba samo u£itava sve reference koje su denirane u __init__.py datoteci uPrimitive imeniku. Ovo se pona²anje moºe promijeniti deniranjem liste __all__ koja sadrºi svaimena modula pridruºena s paketom.Takva lista treba biti denirana unutar paketa u __init__.py datoteci, kao na primjer:# Graphics/Primitive/__init__.py__all__ = ["linije", "tekstovi", "ispuna",...]Ako korisnik pokrene naredbu from Graphics.Primitive import * onda se svi navedeni podmoduliu£itaju, kako se i o£ekuje. U£itavanje samo imena paketa ne¢e automatski u£itati sve podmodulekoji se nalaze u paketu. Na primjer, sljede¢i kôd ne¢e raditi:import GraphicsGraphics.Primitive.fill.floodfill(img,x,y,color)# Pogre²no!Mežutim, budu¢i da importGraphics naredba izvr²ava __init__.py datoteku u Graphics imeniku,mogu¢e ju je promijeniti tako da se automatski u£itaju svi podmoduli:# Graphics/__init__.pyimport Primitive, Graph2d, Graph3d# Graphics/Primitive/__init__.pyimport linije, tekstovi, ispuna ...

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

Saved successfully!

Ooh no, something went wrong!